# Contributor Guidelines Thank you to all the contributors who have helped make this project possible! We welcome various types of contributions, such as bug reports, documentation improvements, feature requests, and code contributions. ## Contributing Guidelines If the feature you would like to contribute has not already received prior approval from the project maintainers (ie. the feature is currently on the roadmap or on the [trello board]()), please submit a proposal in the [proposals category](https://github.com/danny-avila/chatgpt-clone/discussions/categories/proposals) of the discussions board before beginning work on it. - Proposals should include specific implementation details including areas of the application that will be effected by the change inlcuding designs if applicable, and any other relevant information that might be required for a speedy review. - Proposals are not required for small changes, bug fixes, or documentation improvements. - Small changes and bug fixes should be tied to an [issue](https://github.com/danny-avila/chatgpt-clone/issues) and included in the corresponding pull request for tracking purposes. *Please note that a pull request involving a feature that has not been reviewed and approved by the project maintainers may be rejected.* If you would like to discuss the changes you wish to make, join our [Discord community](https://discord.gg/NGaa9RPCft). ## Our Standards Please read our [Coding Standards and Conventions](coding_conventions.md) before beginning on a contribution. Examples of behavior that contributes to creating a positive environment include: - Using welcoming and inclusive language - Being respectful of differing viewpoints and experiences - Gracefully accepting constructive criticism - Focusing on what is best for the community - Showing empathy towards other community members Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions when necessary. ## To contribute to this project, please adhere to the following guidelines: ## 1. Git Workflow We use a GitFlow workflow to manage changes to this project's codebase. Follow these general steps when contributing code: 1. Fork the repository and create a new branch with a descriptive slash based name (e.g., new/feature/x). 2. Implement your changes and ensure that all tests pass. 3. Commit your changes using conventional commit messages with GitFlow flags. Begin the commit message with a tag indicating the change type, such as "feat" (new feature), "fix" (bug fix), "docs" (documentation), or "refactor" (code refactoring), followed by a brief summary of the changes (e.g., `feat: Add new feature X to the project`). 4. Submit a pull request with a clear and concise description of your changes and the reasons behind them. 5. We will review your pull request, provide feedback as needed, and eventually merge the approved changes into the main branch. ## 2. Commit Message Format We have very precise rules over how our Git commit messages must be formatted. This format leads to **easier to read commit history**. Each commit message consists of a **header**, a **body**, and a **footer**. ```