🇪🇸 Español | 🇬🇧 English
¡Gracias por tu interés en contribuir a ESPAlert! Este documento explica el flujo de trabajo, las convenciones del proyecto y cómo enviar tus cambios de forma eficiente.
- Código de conducta
- Primeros pasos
- Entorno de desarrollo
- Flujo de trabajo con Git
- Convenciones de código
- Tests
- Pull Requests
- Reportar bugs
- Solicitar funcionalidades
Este proyecto se rige por el Código de Conducta. Al participar, te comprometes a respetar sus normas.
- Haz fork del repositorio.
- Clona tu fork:
git clone https://github.com/<tu-usuario>/ESPAlert.git cd ESPAlert
- Crea una rama descriptiva:
git checkout -b feat/mi-nueva-funcionalidad
cp .env.example .env # Ajusta los valores si es necesario
docker compose up --build # Levanta toda la pila- Frontend: http://localhost:3000
- API + Docs: http://localhost:8000/docs
# Levanta solo los servicios de infraestructura
docker compose up db redis api worker beat -d
# Instala dependencias del frontend
npm install
npm run dev| Herramienta | Versión mínima |
|---|---|
| Node.js | 20 LTS |
| Python | 3.12 |
| Docker | 24+ |
| npm | 10+ |
Utilizamos Conventional Commits:
<tipo>(<alcance>): <descripción breve>
[cuerpo opcional]
[pie de página opcional]
| Tipo | Cuándo usarlo |
|---|---|
feat |
Nueva funcionalidad |
fix |
Corrección de bug |
docs |
Solo documentación |
style |
Formato (sin cambios lógicos) |
refactor |
Refactorización sin cambio funcional |
test |
Añadir o corregir tests |
chore |
Tareas de mantenimiento (CI, deps, etc.) |
perf |
Mejora de rendimiento |
feat(mapa): añadir capa de incendios forestales
fix(api): corregir filtro de eventos por radio GPS
docs(readme): actualizar instrucciones de instalación
- Linter: Ruff con las reglas por defecto.
- Formato: Ruff format (compatible con Black).
- Docstrings: En inglés, estilo Google.
- Tipos: Usar type hints en todas las funciones públicas.
# Ejecutar linter
pip install ruff
ruff check apps/api/
ruff format apps/api/- Linter: ESLint con la config de Next.js.
- Formato: Prettier (configurado vía ESLint).
- Componentes: Functional components con hooks.
- Nombrado: PascalCase para componentes, camelCase para hooks y utilidades.
npm run lint- Interfaz de usuario: Español (principal), inglés disponible vía i18n.
- Código fuente (variables, funciones, clases): En inglés.
- Comentarios y docstrings: En inglés.
- Commits y PRs: Se prefiere inglés, se acepta español.
cd apps/api
pip install -r requirements.txt pytest httpx
pytest -vnpm run turbo lint --filter=web
npm run turbo build --filter=web- Asegúrate de que tu rama está actualizada con
main. - Verifica que los tests pasan localmente.
- Escribe una descripción clara del cambio.
- Referencia el issue relacionado (si aplica):
Closes #123. - Solicita revisión de al menos un maintainer.
- Mi código sigue las convenciones del proyecto.
- He añadido tests para los cambios (si aplica).
- La documentación está actualizada.
- Los commits siguen el formato Conventional Commits.
- He probado los cambios localmente con Docker.
Usa la plantilla de Bug Report y proporciona:
- Descripción clara del problema.
- Pasos para reproducir el error.
- Comportamiento esperado vs. actual.
- Entorno: navegador, SO, versión de Docker.
- Capturas de pantalla o logs relevantes.
Usa la plantilla de Feature Request e incluye:
- Problema que resuelve la funcionalidad.
- Solución propuesta con el mayor detalle posible.
- Alternativas que hayas considerado.
- Mockups o diagramas si aplica.
¿Dudas? Abre un Discussion en GitHub o contacta con los maintainers.
¡Gracias por hacer de ESPAlert un proyecto mejor! 🛡️