3.1 KiB
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
git clone https://github.com/EvolutionAPI/evo-ai.git
cd evo-ai
2. Backend Setup
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
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:
make run # Backend: http://localhost:8000
-
Frontend:
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
- Reference relevant issues (e.g.,
🧑💻 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
- Example:
feat(auth): add password reset functionality
- Example:
-
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 thetest_*
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:
make docker-build make docker-up
-
Seed database:
make docker-seed
-
Stop stack:
make docker-down
🔐 Contributor License
By contributing to this repository, you agree that your contributions will be licensed under the Apache License 2.0.
💬 Community and Support
Thank you for contributing to Evo AI!