# Contributing Guidelines #

## 📥 Pull Requests ##

We really welcome your pull requests. We encourage you to take a look at issues tagged with `good first issue`. Usually they have a comprehensive description which will help you to solve them with ease. Don't hesitate to ask questions, if something isn't clear.

### Pull request conventions ###

* Any change you make should have a corresponding issue raised (see [issues](https://github.com/grafviktor/goto/issues) page).
* If an issue is a bug, then pull request name should be prefixed with `BUGFIX-XXX`, where `XXX` is the issue number. If it's a feature or an improvement, then PR name should be `FEATURE-XXX`.
* Add a short description to the PR name which will describe the purpose of the changes. Example: `BUGFIX-123: Fix validation rules for user input`.
* It would be good, if you can add several words about the implementation details in the PR comments section.

## 💌 Features ##

If you'd like to contribute a new feature, please check the [issues](https://github.com/grafviktor/goto/issues) page and ensure that something similar hasn't been planned already. If it was planned and still unassigned, just drop a message that you're working on the implementation and go ahead.

If the changes you're going to make is completely new, then please head over to [discussions](https://github.com/grafviktor/goto/discussions) page and let's talk through your plans first, just to make sure that we're on the same page. Once everything is discussed, raise the issue and start the implementation.

Major parts of your changes must be covered by unit tests.

## 🪲 Bugs ##

If you encountered a bug or a problem please raise a "New Issue" on the [issues](https://github.com/grafviktor/goto/issues) page first. Reporting an issue alone is already a great help for the project. If you have enough energy to send a bugfix you will help all those people who use the application. Please, leave a comment beneath the issue letting all know that the work is in progress, if you decide to resolve one of the problems.

Though, in this project we do not follow [TDD](https://en.wikipedia.org/wiki/Test-driven_development) practices, unit test coverage is a must. However, you can send your bugfix without tests. In that case, the project authors will be responsible for adding unit tests on your behalf.
