# Contributing

This is an incomplete list of things to take care while contributing.


## Commits
- Every commit message should have this format `$project: title` being `$project` one of `server`, `web-ui` or `infra`, see the [commit list](https://github.com/X9Developers/block-explorer/commits/master) to get a better idea, also, the message should be meaningful and describe what is changed.
- Don't touch files or pieces non-related to the commit message, create a different commit instead.
- Keep the commits simple to make the reviews easy.
- Merge commits will be rejected, use rebase instead, run `git config pull.rebase true` after cloning the repository to rebase automatically.
- Every commit should have working code with all tests passing.
- Every commit should include tests unless it is not practical.

## Code style
- Try to keep the code style while we integrate a code formatter tool like scalafmt.

## Pull requests
- The pull requests should go to the `develop` branch.

## Other
- `master` branch should never be broken, it contains the current version running in production.



## Environment
It is simpler to use the recommended developer environment.

### server
- IntelliJ with the Scala plugin.

### web-ui
Use [TSLint](https://palantir.github.io/tslint/) to keep the code format consistent, please run `tslint -c tslint.json 'src/**/*.ts'` and fix the errors before every commit, or use [visual code](https://code.visualstudio.com/) with the `Angular Language Service` and `TSLint` plugin to see the errors while typing.