Contributing
============

Below are the guidelines for getting started when contributing to Strider
and any related plugins. Contributions don't need to be code based, you are
encouraged to help out with issues by answering questions or just following up.
We also have documentation that needs to be written/updated, so feel free to contribute
there as well.

## Technology Stack

Here are the technologies to be familiar with:
- [angular](http://angularjs.com)
- [less css](http://lesscss.org)
- [twitter bootstrap](http://twitter.github.io/bootstrap)
- [express](http://expressjs.com)

## Setup

How to get setup (if you're using docker, see the [Docker section in the README][docker], you can skip this):

- grab the repo
- `npm install`
- `bower install && npm run vendor`
- run the tests with `npm test` to make sure your environment is setup
  properly. If you don't have it already, install
  [mongodb]. You could also
  develop using an externally hosted mongodb if you want, just set `DB_URI`.

## Making Code Contributions

**Note:**: **Don't** make changes to the compiled files in the `dist/` directory, those
are generated by using `npm run build` or `npm run watch`. Most of the relavent files are
either in `client/` or `lib/` directories and that's where your changes should happen.

### Client-Side Dependencies

Make sure to check npm for any libraries that you need to use before resorting to Bower.

If using Bower (or any other libs), make sure to add the files with an alias
to the `"browser"` section in `package.json` and also add a shim in `shims.js`.
**Don't use globals, always use `require`.** The only exception is if passing in data
from the server into a page, then use something like `global.myDataObject`. If you can
comment where something originates from, that's appreciated as well.

After installing Bower dependencies, make sure that `npm run vendor` copies all the needed files.
If not, you can add the needed files in the `"install"` section of `bower.json`.

## Pull Requests

Before submitting pull requests, please run `npm test` to make sure you didn't
break anything. If you're adding or changing backend functionality, include tests.

If you're adding or changing the front-end, please include one or more
explanatory screenshots in the pull request.

[docker]: https://github.com/Strider-CD/strider#docker-quickstart
[mongodb]: http://docs.mongodb.org/manual/installation/
