diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..b5e621c0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,141 @@ +# Contributing to Evo AI + +We welcome contributions from the community! Please follow the guidelines below to help us maintain a high-quality, consistent, and secure project. + +--- + +## 📋 Prerequisites + +- **Backend**: Python 3.10+, PostgreSQL 13+, Redis 6+, Git, Make +- **Frontend**: Node.js 18+, pnpm (recommended), or npm/yarn + +--- + +## 🚀 Setting Up the Development Environment + +### 1. Clone the Repository + +```bash +git clone https://github.com/EvolutionAPI/evo-ai.git +cd evo-ai +```` + +### 2. Backend Setup + +```bash +make venv +source venv/bin/activate # On Linux/Mac +# Or: venv\Scripts\activate # On Windows + +make install-dev + +cp .env.example .env +# Edit .env with your local settings + +make alembic-upgrade +make seed-all +``` + +### 3. Frontend Setup + +```bash +cd frontend +pnpm install # Or: npm install / yarn install + +cp .env.example .env +# Edit .env with your API URL, e.g., NEXT_PUBLIC_API_URL=http://localhost:8000 +``` + +### 4. Running the Application + +* **Backend**: + + ```bash + make run + # Backend: http://localhost:8000 + ``` + +* **Frontend**: + + ```bash + cd frontend + pnpm dev + # Frontend: http://localhost:3000 + ``` + +--- + +## 📝 Issue and Pull Request Guidelines + +* **Check for existing issues** before creating a new one. +* **Describe bugs or feature requests** clearly with steps to reproduce (if applicable). +* **Pull Requests** should: + + * Reference relevant issues (e.g., `Fixes #123`) + * Focus on one change at a time + * Include tests where applicable + * Pass linting and formatting checks + +--- + +## 🧑‍💻 Code Standards + +* **All code comments, docstrings, and log messages must be in English** +* **Variable, function, and class names**: English only +* **API error messages and documentation**: English +* **Commit messages**: English and follow [Conventional Commits](https://www.conventionalcommits.org/) + + * Example: `feat(auth): add password reset functionality` +* **Indentation**: 4 spaces +* **Max line length**: 79 characters + +--- + +## 📂 Project Structure and Best Practices + +* Follow the directory structure and naming conventions described in `.cursorrules`. +* **Tests** should be placed under `tests/` and follow the `test_*` naming convention. +* All routes require input validation using Pydantic schemas. +* Use transactions for database operations affecting multiple records. +* Document all public functions and classes. +* Keep `.env.example` updated when adding environment variables. +* Sensitive values must be set via environment variables and never hard-coded. + +--- + +## 🐳 Docker Development + +* **Build and start stack:** + + ```bash + make docker-build + make docker-up + ``` +* **Seed database:** + + ```bash + make docker-seed + ``` +* **Stop stack:** + + ```bash + make docker-down + ``` + +--- + +## 🔐 Contributor License + +By contributing to this repository, you agree that your contributions will be licensed under the [Apache License 2.0](./LICENSE). + +--- + +## 💬 Community and Support + +* [WhatsApp Group](https://evolution-api.com/whatsapp) +* [Discord Community](https://evolution-api.com/discord) +* [Official Documentation](https://doc.evolution-api.com) + +--- + +Thank you for contributing to Evo AI!