# Contributing to Grafatui
First off, thanks for taking the time to contribute! ❤️
All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions.
## Table of Contents
- [I Have a Question](#i-have-a-question)
- [I Want To Contribute](#i-want-to-contribute)
- [Reporting Bugs](#reporting-bugs)
- [Suggesting Enhancements](#suggesting-enhancements)
- [Your First Code Contribution](#your-first-code-contribution)
- [Development Workflow](#development-workflow)
- [Pull Request Process](#pull-request-process)
## I Have a Question
If you want to ask a question, we assume that you have read the available [Documentation](README.md).
Before you ask a question, it is best to search for existing [Issues](https://github.com/fedexist/grafatui/issues) that might help you. In case you've found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first.
## I Want To Contribute
### Reporting Bugs
This section guides you through submitting a bug report for Grafatui. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.
- **Use a clear and descriptive title** for the issue to identify the problem.
- **Describe the exact steps which reproduce the problem** in as many details as possible.
- **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or copy/pasteable snippets, which you use in those examples.
- **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior.
- **Explain which behavior you expected to see instead and why.**
- **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem.
### Suggesting Enhancements
This section guides you through submitting an enhancement suggestion for Grafatui, including completely new features and minor improvements to existing functionality.
- **Use a clear and descriptive title** for the issue to identify the suggestion.
- **Provide a step-by-step description of the suggested enhancement** in as many details as possible.
- **Provide specific examples to demonstrate the steps**.
- **Describe the current behavior** and **explain which behavior you expected to see instead** and why.
### Your First Code Contribution
Unsure where to begin contributing to Grafatui? You can start by looking through these `good-first-issue` and `help-wanted` issues:
- [Good First Issues](https://github.com/fedexist/grafatui/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) - issues which should only require a few lines of code, and a test or two.
- [Help Wanted Issues](https://github.com/fedexist/grafatui/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) - issues which should be a bit more involved than beginner issues.
## Development Workflow
Please refer to [DEVELOPMENT.md](DEVELOPMENT.md) for detailed instructions on setting up your development environment, running tests, and building the project.
## Pull Request Process
1. Fork the repo and create your branch from `dev`.
2. If you've added code that should be tested, add tests.
3. If you've changed APIs, update the documentation.
4. Ensure the test suite passes.
5. Make sure your code lints.
6. **Important**: We use [Conventional Commits](https://www.conventionalcommits.org/) for our commit messages. This allows us to automatically generate changelogs and releases.
- `feat: add new feature`
- `fix: fix bug`
- `docs: update documentation`
- `chore: maintenance`
7. Issue that pull request!
## License
By contributing, you agree that your contributions will be licensed under its Apache 2.0 License.