Contributing to Habitica

HabitRPG is an open-source project. 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 with programming or artwork, 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. Be bold!

Also, join us in IRC: #habitrpg freenode.net

Designers
Habitica tells 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 jump in. It's a void that needs filling (we don't have any designers). Most importantly we could really use CSS optimizations help on mobile.

The best bet is to jump into the web, mobile, or shared repos as you see fit. Ping us with questions (the main characters that hang around these days are @paglias, @lefnire, @Shaners, and @meaganoff) or just change something that irks you and submit a pull request. Read below for some of the repository details.

Pixel Artists
Jump into any of threads. It's a whole vibrant community of artists such as yourself, waiting for you to join the fray!

Writers
Things we need help with:


 * Write guest posts for other blogs, help get the word out. Heck, even Facebook & Twitter updates. This is Habit's current bread-and-butter. I'll periodically see a surge in traffic, and GA-source it to a fan's blog post - y'all don't know how grateful this makes me :)


 * Get involved with the Tutorials & Documentation. Lend your word skills to this wikia, see below. Also check out the Tutorials & Documentation card on our Trello board.

Coders (Web & Mobile)
You are desperately needed! Let's first discuss our technologies so you can decide which repository you want to get involved with.

https://dl.dropboxusercontent.com/u/3869142/HabitRPG%20Architecture.png

There are three repositories: Shared 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
 * habitrpg-shared

Mobile
One of the best decisions we made was launching the app on AngularJS + PhoneGap. This has allowed us to literally copy & paste giant portions of code between web & mobile, making maintenance and developer transferring a breeze. That's right, the mobile app uses the exact same front-end stack of the website.

While PhoneGap has saved us a lot of effort, the major issues here are (1) us not using all the css tricks we can to optimize performance, (2) mobile-only javascript bugs (like ghost clicks & the sort). If you're mobile-web savvy, please jump into this project wherever you can:


 * Issues


 * Features

Also, before jumping in read this note on some of the orphan files, habitrpg-shared integration, etc.

Website
About technology in a bit, but first:


 * "I wanna start small" - hit the issue queue, take something that looks simple enough (probably the "priority - minor" & "priority - medium" 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.


 * "Forget that, I want to build things!" - Trello feature queue

We originally launched on DerbyJS (which didn't work out, long story short), and we're in mid-transfer to AngularJS - and need your help! If you can cope with a messy codebase, here's the scoop. First, tech stack:

Server


 * ExpressJS (NodeJS)


 * MongooseJS (MongoDB)

Client


 * AngularJS


 * Jade


 * Stylus

Check out the develop branch. Follow the "README.md" instructions in there for getting the server running. What we're doing is converting all the old *code* files in "/archive/derby_controllers" to the new Angular controller code in "/public/js", side-by-side with converting old "/views/*.html" to the new "/views/*.jade". As you convert things over, delete the original so we know it's ported. You can tell something hasn't been ported in controller code if it's still using `x-bind=""` instead of `ng-click=""`.

!html->jade port

![coffee->js](https://dl.dropboxusercontent.com/u/3869142/coffeescript-file-conversion.png)

A side-note on technology: we're moving from CoffeeScript to JavaScript because CS is a bigger barrier-to-entry for Habit as an open-source project. I personally love CoffeeScript, but it's prevented quite a few developers from joining. As far as Jade goes, we need a server templating language without ` – ` binding syntax (aka, Handlebars & Mustache) since they're incompatible with Angular. We could have gone with EJS - let me know if you think Jade will cause a barrier.

Let's tackle porting features bit-by-bit, [self-assign tickets at here](https://github.com/lefnire/habitrpg/issues?milestone=3&state=open). Right now the most of the major features have been ported, but most of the minor bits (drop / streak-bonus notifications, graphs & charts, etc) haven't been ported. The best bet is to take a peak at the those issues to get a feel, then run the app locally and start playing around - then just tackle whatever issues you see and feel comfy tackling.

30m Video Tutorial on jumping in, if you're a video learner: https://www.youtube.com/watch?v=pI0W39E33bI

Once the rewrite is complete, we'll move on to these:


 * Issues


 * Features

Requesting features/Submitting ideas
If you have an idea for improving HabitRPG, you can learn about our feature tracker and how to request a new feature or go straight to our community site and submit new feature ideas for the web app or mobile app.

Submit bug reports here.



New to wikis?

 * If you are new to wikis, you may want to read the tutorial.
 * There is some advice on getting this wiki started at Help:Starting this wiki.
 * A list of most help pages can be found on Help:Contents and in Category:Help.

How to help out

 * If you want to help but you're not sure where to start, try improving the various stub articles by adding content.
 * Checking out pages with suggested changes is also a good source of ideas.
 * 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    :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, you can use the talk page for that article.
 * For more general discussions you can use Forums.


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

For more info about the project...

you can also check out:  the Community Pages on the HabitRPG website, 

open issues on Github, and

see enhancements under consideration on the Trello board.