Contributing to Habitica

HabitRPG is an open-source project that can help you achieve goals. Everyday people with everyday lives devote their time and energy to creating and maintaining everything you see here on this wiki and at HabitRPG. Whether you want to earn the contributor rewards and titles or you just like the idea of open source, we welcome you to contribute to the project. Please jump in where you feel comfortable contributing; there are a wide range of roles available. Be bold!

Designers
Habitica tells the legend of the Hero (Zakkain), who completely rebranded our original 100%-Bootstrap look-and-feel, and gave us a beautiful aesthetic to call our own. Champion as he is, he's now questing in far-off realms. If you see any design issues that could use improvement, please do help out. It's a void that needs filling (we don't have any designers). Most importantly we could really use help with CSS optimizations on mobile.

Your best point of entry is to play around with the web, mobile, or shared repositories. Ask questions by logging an issue on GitHub or just change something that irks you and submit a pull request. Read below for some of the repository details.

Pixel Artists
Jump onto the HabitRPG Pixel Art Trello Board, and join the Pixels in Progress guild. There is a whole vibrant community of artists such as yourself, waiting for you to join the fray! They will give you directions as to how you can help HabitRPG the most.

Translators
Both the game itself and this wiki can benefit from translation help. Anyone can help, though there are few translators out there right now. Join them! See the main article for more details on how to get involved.

Music and Sound Effects Artists
If you are into sound effects and music, or any sort of digital sound, this is the area for you. Check the article for details on how to help HabitRPG improve its music and sound effects.

Writers
Things we need help with:


 * Write guest posts for other blogs and help get the word out. Even Facebook & Twitter updates are great. This is Habit's current bread-and-butter. Periodically, there is a surge in traffic and the admins trace it back to a fan's blog post. This makes them extremely happy. Contribution tiers for blog posts and social media are on a discretionary basis -- posts on high-traffic sites are more likely to receive a tier than on a personal blog with few followers or comments. If you feel like your post merits a tier, post a direct link to The Tavern. If you feel like your post was missed, you can repost again after 24 hours. However, remember that not all guest posts will receive contributor tiers. Blogs with more traffic, comments, and visibility are more likely to receive a tier.
 * Get involved with the tutorials & documentation over on the Trello board.
 * You can even help right here on the wiki! Make a wikia account and help the community by writing and contributing to articles. See Helping on the Wiki.


 * Write tales for our Quests on our HabitRPG Quests Trello.

Coders (Web & Mobile)
You are desperately needed! See the Video tutorial, if that's your preferred format. Let's first discuss our technologies so you can decide which repository you want to get involved with.

Our technology stack is:
 * Server:
 * ExpressJS (NodeJS)
 * MongooseJS (MongoDB)
 * Client:
 * AngularJS
 * Jade
 * Stylus
 * CoffeeScript
 * Other:
 * Grunt
 * Bower

There are two repositories: In the "habitrpg" repository, the `common` directory is a library of character sprites, css, algorithms, helper functions, etc. - both mobile & web (and both server & client on web) use this library. If there are any logic errors (custom day start not kicking in, wrong timezone when new-day is calculated, drops not random, etc.) it's going to be here. This library needs a lot of help, so if you're a left-brainer (all sorts of algorithms in here), jump in here! Also, we could really use some unit tests!
 * website
 * mobile



Mobile
The current official mobile app uses AngularJS + PhoneGap. This has allowed us to literally copy and paste giant portions of code between web and mobile, making maintenance a breeze. However the mobile app is slow and is being replaced with native versions for Android and iOS, which will be open-sourced when they are at a suitable stage.


 * Issues
 * Features

How Can I Help?

 * I want to start small: hit the issue queue, take something that looks simple enough (probably the priority - minor, priority - medium, and entry level coding (text etc.) tickets
 * I'm ready to dive in, and I want to help where I'm most needed:
 * priority - critical and priority - important on the issue queue
 * Unit tests & Karma tests! Oh please, oh please, oh please!
 * We love you and need you.
 * I can finish what someone else started: There are many issues that someone has started and then abandoned for a while due to overwork in other areas. If you see a likely issue with no recent comments, it might be available. You're welcome to post in the issue to ask if it's still being worked on.
 * Forget that, I want to build things!: Make way for the new hero! Check out the Trello feature queue.

Once you see an issue you would like to work on, check the conversation to see if somebody is already working on it, or to see if a pull request is linked (which means someone has already submitted a fix). If you are not sure, post a comment on the issue to either ask about the current status or express your interest in fixing the issue.

Join the Aspiring Coders guild to discuss programming for the site, to learn some tips, and to get ideas for what to work on.

Setting up HabitRPG locally
Blacksmiths should create a local running instance of HabitRPG, for testing and development. The process to create a local instance can be difficult, so we've collected helpful notes and tips by operating system.

BountySource
Users may now post bounties for HabitRPG bug fixes and feature requests on BountySource.

Technologies discussion
Why do we use Jade and Stylus?
 * Jade: We need a server-side templating language so we can inject variables (`res.locals` from Express). Jade is great because the "significant whitespace" paradigm protects you from HTML errors such as missing or mal-matched close tags, which has been a pretty common error from multiple contribs on Habit.
 * Stylus: Vanilla CSS wasn't cutting it for our app.

New to wikis?

 * If you are new to wikis, you may want to read the tutorial.
 * View the list of help pages for guidance.

How to help out

 * Check out the Guidance for Scribes.
 * If you want to help but you're not sure where to start, try improving the various stub articles by adding content.
 * Make our site more visually appealing by adding or replacing images. Most of the original HabitRPG images used on the website can be found on GitHub.
 * Examining pages with suggested changes is also a good source of ideas.
 * Reviewing and (when appropriate) editing speculative content helps to keep the wiki accurate.
 * Another helpful activity would be to check the list of wanted pages for frequently linked-to articles that don't exist yet.
 * To follow the changes to this wiki, and to look out for new users and edits use recent changes.
 * You can find a list of useful templates on Category:Templates, some of which are documented on HabitRPG Wiki:Templates.
 * If you need help editing, you could start with Help:Editing or the tutorial.

Want to discuss stuff?

 * If you want to discuss anything specific to an article, use the talk page for that article, and remember to sign it.
 * For more general discussions, use forums.
 * Consider joining the Wizards of the Wiki guild.

Please sign in every time you edit, so that we can recognize your contributions.

Helping other Players in HabitRPG Chat Forums
The Tavern and the Newbies Guild have many friendly people who answer each other's questions about HabitRPG and give advice about how to make the most of the site. If you'd like to join in, you'd be very welcome! Start small by giving answers that you're sure about to questions that don't already have replies -- but don't worry if someone posts a reply at the same time as you! That happens often and is jokingly referred to as being ninja'ed.

If you're not certain about how to help someone, you can read the wiki carefully and give a summary of what you find. It's often helpful to also post links to relevant wiki pages so that the player can learn extra details if they'd like to. However, avoid giving abrupt "RTFM" ("Read the Freaking Manual") responses; be aware that new players might not know about the wiki, or might feel overwhelmed by all the information in it, so be sensitive to their needs for gentle assistance.

If a player has been posting helpful, relevant, accurate advice for some time, the staff and moderators will often award them with a Tier 1 Socialite Contributor Reward. If they continue to provide consistently positive and helpful assistance over time, they may be granted further Tiers.

Socialite Tiers are usually only awarded for assistance provided in the Tavern and the Newbies Guild because it is harder for the staff and moderators to notice ongoing assistance in other areas. However under special circumstances, a Socialite Tier might be awarded for other assistance, at the discretion of the staff.

Requesting features/Submitting ideas
If you have an idea for improving HabitRPG:
 * Use the feature tracker to request a new feature
 * Submit bug reports at GitHub. Please read the instructions at that link before creating your bug report.

Feature requests and bug reports are very much appreciated but do not count towards Contributor Rewards.

For more info about the project

 * Open issues on Github
 * Enhancements under consideration on the Trello board
 * The Aspiring Legends Guild, a guild for contributors of all types. This is an ideal location to post questions about contributing.
 * IRC: #habitrpg freenode.net