It is crucial to add [docstrings](https://www.programiz.com/python-programming/docstrings) to your code. You can check the existing code for the docstring style. Here is an example:
Since the system is highly dependent on multiple containers, it is best to write your code using Docker as well. To do that, you can start the whole system and leave it running in the background. Later, you can make the required changes to the code and only restart the `captchamonitor` container using `docker-compose restart captchamonitor` command. This will apply the changes you made and restart the code. I also like having `sudo watch -n 1 make logs` command run on a window and get the logs updated automatically.
## Formatting and checking your code with linter
After you are done adding a feature, make sure to run the `make check` command. This will adjust the format of the code and check for stylistic issues:
You *have* to make sure that `make check` command doesn't return any errors because GitLab also runs that command once you push the code and we will not be merging any code until the green checkmark shows up next to your commit.
## Testing your code
It is important to add unit tests for the code you wrote. At the moment, it is not the first priority but please write tests whenever you can. Once you have the test, you can run them with `make test` command:
Pull requests should be ideally small and shouldn't contain hundreds of lines of code change. Here is a good article that explains more: https://opensource.com/article/18/6/anatomy-perfect-pull-request