🇬🇧 English | 🇪🇸 Español
Thank you for your interest in contributing to ESPAlert! This document explains the workflow, project conventions, and how to submit your changes efficiently.
- Code of Conduct
- Getting Started
- Development Environment
- Git Workflow
- Code Conventions
- Tests
- Pull Requests
- Reporting Bugs
- Requesting Features
This project is governed by the Code of Conduct. By participating, you commit to respecting its standards.
- Fork the repository.
- Clone your fork:
git clone https://github.com/<your-username>/ESPAlert.git cd ESPAlert
- Create a descriptive branch:
git checkout -b feat/my-new-feature
cp .env.example .env # Adjust values if needed
docker compose up --build # Start the entire stack- Frontend: http://localhost:3000
- API + Docs: http://localhost:8000/docs
# Start only infrastructure + backend services
docker compose up db redis api worker beat -d
# Install frontend dependencies
npm install
npm run dev| Tool | Minimum Version |
|---|---|
| Node.js | 20 LTS |
| Python | 3.12 |
| Docker | 24+ |
| npm | 10+ |
We use Conventional Commits:
<type>(<scope>): <brief description>
[optional body]
[optional footer]
| Type | When to use |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
style |
Formatting (no logic changes) |
refactor |
Refactoring without functional change |
test |
Add or fix tests |
chore |
Maintenance tasks (CI, deps, etc.) |
perf |
Performance improvement |
feat(map): add wildfire layer
fix(api): correct GPS radius filter
docs(readme): update installation instructions
- Linter: Ruff with default rules.
- Format: Ruff format (Black-compatible).
- Docstrings: In English, Google style.
- Types: Use type hints for all public functions.
# Run linter
pip install ruff
ruff check apps/api/
ruff format apps/api/- Linter: ESLint with Next.js config.
- Format: Prettier (via ESLint).
- Components: Functional components with hooks.
- Naming: PascalCase for components, camelCase for hooks and utilities.
npm run lint- User Interface: Spanish (primary), English available via i18n.
- Source Code (variables, functions, classes): In English.
- Comments and Docstrings: In English.
- Commits and PRs: English preferred, Spanish accepted.
cd apps/api
pip install -r requirements.txt pytest httpx
pytest -vnpm run turbo lint --filter=web
npm run turbo build --filter=web- Ensure your branch is up to date with
main. - Verify that tests pass locally.
- Write a clear change description.
- Reference the related issue (if applicable):
Closes #123. - Request review from at least one maintainer.
- My code follows project conventions.
- I've added tests for the changes (if applicable).
- Documentation is updated.
- Commits follow Conventional Commits format.
- I've tested the changes locally with Docker.
Use the Bug Report template and provide:
- Clear description of the problem.
- Steps to reproduce the error.
- Expected behavior vs. actual behavior.
- Environment: browser, OS, Docker version.
- Screenshots or logs if relevant.
Use the Feature Request template and include:
- Problem that the feature solves.
- Proposed solution with as much detail as possible.
- Alternatives you've considered.
- Mockups or diagrams if applicable.
Questions? Open a Discussion on GitHub or contact the maintainers.
Thank you for making ESPAlert a better project! 🛡️