# Contributing to JSON:API
Thank you for your interest in contributing to the JSON:API library! We welcome contributions from the community and are excited to work with you.
## Code of Conduct
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project, you agree to abide by its terms.
## How to Contribute
### Reporting Bugs
- Ensure the bug was not already reported by searching on GitHub under [Issues](https://github.com/your-username/json-api/issues).
- If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/your-username/json-api/issues/new). Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample** or an **executable test case** demonstrating the expected behavior that is not occurring.
### Suggesting Enhancements
- Open a new issue with a clear title and detailed description of the proposed enhancement.
- Provide examples of how the enhancement would be used.
- Explain why this enhancement would be useful to most JSON:API users.
### Pull Requests
1. Fork the repository and create your branch from `main`.
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. Issue that pull request!
### Development Setup
1. Clone the repository:
```bash
git clone https://github.com/your-username/json-api.git
```
2. Navigate to the project directory:
```bash
cd json-api
```
3. Build the project:
```bash
cargo build
```
4. Run tests:
```bash
cargo test
```
### Code Style
- Follow the [Rust Style Guide](https://rust-lang.github.io/rust-clippy/).
- Run `cargo fmt` to format your code.
- Run `cargo clippy` to catch common mistakes and improve your code.
### Testing
- Write tests for any new functionality.
- Ensure all tests pass before submitting a pull request.
- Include both unit tests and integration tests where appropriate.
### Documentation
- Update documentation when making changes to the API.
- Add examples for new features.
- Ensure all public functions have clear doc comments.
## Getting Help
If you need help with contributing, feel free to:
- Open an issue with your question
- Reach out to the maintainers
## License
By contributing to this project, you agree that your contributions will be licensed under the MIT License.