# Contributing to TheMovieDB Rust API Wrapper
We welcome contributions to this project! To ensure a smooth and collaborative development process, please follow these guidelines.
## How to Contribute
1. **Fork the repository**: Start by forking the `TheMovieDB` repository to your GitHub account.
2. **Clone your fork**: Clone your forked repository to your local machine:
```bash
git clone https://github.com/Junaid433/TheMovieDB.git
cd TheMovieDB
```
3. **Create a new branch**: Create a new branch for your feature or bug fix. Use a descriptive name (e.g., `feat/add-new-endpoint`, `fix/bug-in-auth`).
```bash
git checkout -b feat/your-feature-name
```
4. **Make your changes**: Implement your changes, ensuring they adhere to the existing code style and conventions.
5. **Write tests**: If you're adding new features or fixing bugs, please write (or update existing) unit tests to cover your changes. Ensure all tests pass.
```bash
cargo test
```
6. **Run `cargo fmt` and `cargo clippy`**: Before committing, ensure your code is properly formatted and passes lint checks.
```bash
cargo fmt
cargo clippy -- -D warnings
```
7. **Commit your changes**: Write clear and concise commit messages. Follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification if possible (e.g., `feat: Add new movie endpoint`, `fix: Resolve API key issue`).
```bash
git commit -m "feat: Your descriptive commit message"
```
8. **Push to your fork**: Push your changes to your forked repository.
```bash
git push origin feat/your-feature-name
```
9. **Create a Pull Request**: Open a pull request from your branch to the `main` branch of the original repository. Provide a clear description of your changes and reference any related issues.
## Code Style
- Follow Rust's official style guidelines as enforced by `cargo fmt`.
- Use `cargo clippy` to catch common mistakes and improve code quality.
## Reporting Bugs
If you find a bug, please open an issue on the GitHub repository. Provide as much detail as possible, including:
- A clear and concise description of the bug.
- Steps to reproduce the behavior.
- Expected behavior.
- Actual behavior.
- Your Rust version and operating system.
## Feature Requests
If you have a feature request, please open an issue on the GitHub repository. Describe the feature, why it would be useful, and any potential implementation ideas.
Thank you for contributing!