SPRINT-00.md
Sprint 0 — Cimientos del proyecto
Normativa completa del Sprint 0:
docs/SPRINT_0.md. Este archivo es el tracker de tareas. El estado de avance se actualiza aquí al cierre de cada sesión.
1. Datos del sprint
| Campo | Valor |
|---|---|
| Número | 00 |
| Objetivo | Construir la plataforma antes de construir la aplicación |
| Estado | CERRADO |
| Tag git | sprint-00 |
2. Tareas planificadas
Antes de pasar una tarea a
EN_PROGRESO: completar su instancia enprompts/AGENT_TASK_TEMPLATE.md.
| # | Tarea | Agente | Rama git | Depende de | Estado |
|---|---|---|---|---|---|
| 0 | Documentación obligatoria Sprint 0 | Orchestrator | — (PR #1) | — | CERRADA |
| 1 | Dockerfiles backend y frontend | DevOps | chore/devops-dockerfiles (PR #5) |
— | CERRADA |
| 2 | docker-compose.yml completo (todos los servicios) | DevOps | chore/devops-compose (PR #6) |
Tarea 1 | CERRADA |
| 3 | Nginx + scripts de backup GFS + .env.example | DevOps | chore/devops-nginx-backup (PR #13) |
Tarea 2 | CERRADA |
| 4 | CI/CD — GitHub Actions (ci.yml + cd.yml desactivado) | DevOps | chore/devops-cicd (PR #12) |
Tarea 2 | CERRADA |
| 5 | Proyecto Django + django-tenants + settings divididos | Backend | chore/backend-django-setup (PR #7) |
Tarea 2 | CERRADA |
| 6 | Modelo Usuario + autenticación JWT + permisos base | Backend | chore/backend-auth (PR #8) |
Tarea 5 | CERRADA |
| 7 | Estructura de apps + service layer + healthcheck + tests mínimos | Backend | chore/backend-apps (PR #9) |
Tarea 6 | CERRADA |
| 8 | React + Vite + Tailwind + PWA shell + design system mínimo | Frontend | chore/frontend-shell (PR #10) |
Tarea 2 | CERRADA |
| 9 | Rutas + cliente HTTP + manejo de auth + estados base + componentes | Frontend | chore/frontend-base (PR #11) |
Tareas 6 y 8 | CERRADA |
3. Agentes involucrados
DevOps— tareas 1 a 4Backend— tareas 5 a 7Frontend— tareas 8 y 9Orchestrator— coordinación, revisión de DoD técnico y cierre
4. Definition of Done — proceso
- [x] Todas las ramas mergeadas a
main. - [x] Todos los PRs aprobados con
PR_CHECKLIST.md. - [x] Tests ejecutados y sin regresiones.
- [x] Tag
sprint-00creado enmain. - [x]
docs/PROJECT_STATUS.mdactualizado. - [x]
docs/NEXT_ACTION.mdactualizado. - [x] Esta instancia marcada como
CERRADOenSPRINT_INDEX.md.
5. Definition of Done — técnico
Condiciones verificables en ejecución. El sprint no se cierra hasta que todas sean demostrables.
- [x]
docker compose uplevanta todos los servicios sin errores (PostgreSQL, Redis, Django, Celery, Nginx, backup). - [x] Los schemas
publicytenant_testmigran sin errores (python manage.py migrate_schemas). - [x]
GET /api/health/responde200 OK. - [x] El login retorna JWT válido y el token autentica requests subsiguientes.
- [x] El frontend carga en
http://localhost:5173con el flujo de auth funcional. - [x] El pipeline CI pasa en GitHub Actions (tests + lint + build).
6. Resumen de cierre
Completado al cierre del sprint — 2026-06-26.
Completado
- Tarea 0 — Documentación obligatoria (PR #1, 2026-06-25)
- Tarea 1 — Dockerfiles backend (378 MB) y frontend (74 MB) (PR #5)
- Tarea 2 — docker-compose.yml completo: 8 servicios, red interna, healthchecks, backup GFS,
.env.example(PR #6) - Tarea 3 — Nginx prod config: SPA static, proxy Django, security headers, SSL-ready (PR #13)
- Tarea 4 — CI GitHub Actions: lint (ruff + black) + tests (pytest) + type-check + build en cada PR (PR #12)
- Tarea 5 — Proyecto Django + django-tenants + settings por entorno (PR #7)
- Tarea 6 — Modelo Usuario custom + JWT auth + httpOnly cookie + token blacklist + permisos base (PR #8)
- Tarea 7 — Estructura de 5 apps + healthcheck + 18 tests pasando en CI (PR #9)
- Tarea 8 — Frontend shell: React + Vite + Tailwind + PWA + design system (PR #10)
- Tarea 9 — Auth frontend: Zustand + axios interceptors + LoginPage + rutas protegidas + restauración de sesión (PR #11)
Pendiente / movido al backlog
Ninguno. Todas las tareas del Sprint 0 cerradas.
Decisiones tomadas
- ADR-001 — Aislamiento multi-tenant por schema de empresa
- ADR-002 — GitHub Actions como plataforma CI/CD
- ADR-003 — Logs estructurados + Sentry + Loki/Grafana
- ADR-004 — Resolución de conflictos en sincronización offline
- Refresh token en httpOnly cookie + access token en memoria Zustand (seguridad)
- ruff + black para lint/formato Python; tsc --noEmit para TypeScript
Estado de salida
SPRINT_00_STATUS: CERRADO