# Contributing to ExMachine Thank you for your interest in contributing to ExMachine! 🎉 ## Project Status ExMachine is currently in **alpha stage**. We're actively working on stabilizing the API and welcome community feedback and contributions. ## How to Contribute ### Reporting Issues - Use the [GitHub issue tracker](https://github.com/carlotorrese/ex_machine/issues) - Search existing issues before creating a new one - Use the provided issue templates for bug reports and feature requests - Include as much detail as possible (Elixir version, OS, code examples) ### Submitting Changes 1. **Fork** the repository 2. **Create a feature branch** from `main` ```bash git checkout -b feature/your-feature-name ``` 3. **Make your changes** with clear, descriptive commits 4. **Add tests** for new functionality 5. **Run the test suite** to ensure nothing breaks ```bash mix test mix format --check-formatted mix dialyzer ``` 6. **Update documentation** if needed 7. **Submit a pull request** with a clear description ### Development Setup 1. Clone the repository: ```bash git clone https://github.com/carlotorrese/ex_machine.git cd ex_machine ``` 2. Install dependencies: ```bash mix deps.get ``` 3. Run tests: ```bash mix test ``` 4. Generate documentation: ```bash mix docs ``` ### Code Style - Follow standard Elixir formatting (`mix format`) - Write clear, descriptive function and variable names - Add documentation for public functions - Include typespecs where appropriate - Keep functions small and focused ### Testing - All new code should include tests - Aim for good test coverage - Use descriptive test names - Test both happy path and edge cases ### Documentation - Update documentation for any API changes - Include code examples in module docs - Keep README.md up to date - Add entries to CHANGELOG.md for significant changes ## Code of Conduct This project follows the [Hex Code of Conduct](https://hex.pm/policies/codeofconduct). Please be respectful and inclusive in all interactions. ## Questions? Feel free to open an issue for questions or discussion about the project direction, API design, or implementation details. ## License By contributing to ExMachine, you agree that your contributions will be licensed under the MIT License.