# Contributing to Atlas

:tada: To begin with, thank you so much in your interest in contributing to Atlas :tada:

### Contributing TL;DR

1. Always make sure to create an issue or comment on an existing issue before you start any work
2. Make sure to follow [Atlas styleguide](docs/styleguide.md)
3. Once you have a change ready, push to a branch on your own fork
4. Open a PR from your fork to the `dev` branch on the main repo
5. Make sure to link to a relevant issue when opening a PR
6. Have fun!

### Looking for work

If you would like to contribute but don't know where to start, take a look at issues with a [good first issue label](https://github.com/Joystream/atlas/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) or [bug label](https://github.com/Joystream/atlas/issues?q=is%3Aissue+is%3Aopen+label%3Abug). Those are usually quite easy to get into. Also, you are always free to suggest any changes that you think would be beneficial to the app.

### Contributing resources

- [Atlas styleguide](docs/styleguide.md)
- [Atlas technical overview](docs/overview.md)

### Contributing guidelines

If you want to contribute, the very first place to stop at is the [issues list](https://github.com/Joystream/atlas/issues). It's a very good practice to base any work on an issue. If you want to add some functionality to the app, create an issue with your proposal first, so we can discuss. If it turns out the team disagrees with the change you're proposing, you will not waste time doing wasted work. If you would like to work on an existing issues, you're free to do so, but please first leave a comment in the issue that you will be working on that. This ensures that we don't get into a situation when more than one contributor works on a given feature at the same time.

Once you know what you will be working on and created/commented on an appropriate issue, it's time to get to work. Before you begin tough, please fork the main repo, so you have your own copy which you can use for development. We work in a forking model, so nobody pushes to the main repo directly - all contributors have their own forks from which they open PRs to the main repo. If you are new to working with Git, [check out this amazing free tutorial](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github).

When you are happy with your work and are ready to open a PR, push a feature branch to your fork (e.g. `fix-buttons`) and [open a PR](https://github.com/Joystream/atlas/compare) from your fork to the main repo `dev` branch. Please include a link to a relevant issue and also explain any notable changes you've made so it's easier for others to review.

Once your PR is open, you should get some feedback from the Atlas team in a few days. We may request some changes and after everything is done your PR will be merged to `dev`. Then, after some time on the `dev` branch, your changes will get merged to the `master` and deployed to production. Thanks!

If at any point of the process you feel lost or don't know what to do, don't hesitate to ask for help on [Joystream Discord](https://discord.gg/nuQeWXfSvq). You may want to use `#tech-support`, also feel free to tag `@kdembler`.
