Este repositorio impulsa la reconstrucción completa, moderna y modular de un sistema legado originalmente desarrollado como un monolito Django. El objetivo es evolucionarlo hacia una plataforma totalmente desacoplada donde cada capa (backend, frontend, backoffice e infraestructura) se diseñe desde cero para alinearse con la visión arquitectónica actualizada.
- Backend moderno con Django REST Framework, JWT, PostgreSQL y módulos desacoplados.
- Frontend SPA con React + Vite integrado vía API REST.
- Backoffice con React Admin o solución equivalente.
- Infraestructura con Docker, despliegues automatizados en Dokploy y CI/CD con GitHub Actions.
Reconstruir el sistema desde cero siguiendo una arquitectura desacoplada, escalable, versionada y basada en REST, garantizando la migración de datos desde el sistema antiguo hacia la nueva plataforma modular.
La arquitectura definida maximiza el desacoplamiento y la escalabilidad, permitiendo que cada módulo evolucione de forma independiente sin comprometer la cohesión global.
- API REST con Django y Django REST Framework.
- Autenticación JWT, endpoints versionados y documentados.
- PostgreSQL como base de datos, gestión de media persistente y pruebas unitarias e integraciones automatizadas.
- Módulos clave: Usuarios & Autenticación, Blog/Noticias, Agenda/Eventos, Lugares, Media Manager, Configuración general y Traducciones.
- SPA desacoplada con React + Vite, routing avanzado y soporte multilenguaje.
- Consumo directo de la API REST con manejo robusto de estados y caching.
- Módulos clave: Home, Noticias, Detalle de noticia, Agenda, Detalle de evento, Mapa/Lugares, About, Selector de idioma y Layout (Header/Footer).
- Ruta:
frontend/ - Stack: React 18 + Vite + TypeScript + Tailwind CSS (v4) + Flowbite/Flowbite React
- Puerto dev:
http://localhost:5173 - Alias imports:
@/->frontend/src - Config API:
VITE_API_BASE_URL(si apuntas ahttp://localhost:8000/apise normaliza automáticamente a/api/v1; fallback por defecto:http://localhost:8000/api/v1)
Comandos:
cd frontend
npm install
npm run dev- Panel administrativo en React Admin u otra solución React equivalente, autenticado mediante JWT contra la misma API.
- Módulos clave: Autenticación administrativa, Posts, Eventos, Lugares, Usuarios, Configuración, Media y Auditoría básica.
- Contenedores Docker y orquestación con Docker Compose.
- Despliegues automatizados en Dokploy y pipelines CI/CD en GitHub Actions.
- Observabilidad mínima con logs centralizados y métricas básicas.
Esta arquitectura fue elegida para facilitar la escalabilidad horizontal, acelerar la entrega continua, permitir reemplazos tecnológicos por capas y reducir dependencias entre equipos, asegurando una plataforma resiliente y preparada para iteraciones rápidas.
- Desacoplamiento total entre backend y frontend: la interacción ocurre exclusivamente mediante APIs REST.
- La documentación viva es el pilar de control y se mantiene actualizada para guiar cada decisión.
/docses la fuente de verdad para decisiones técnicas, flujos de trabajo y definiciones de producto.- Las instrucciones activas para agentes viven en
AGENTS.md,AGENTS_CLOUD.mdy.agents/skills/modern-web-guidance/SKILL.md.
La estructura actual del repositorio (sujeta a expansión conforme se creen los módulos planificados) es la siguiente:
.
├── README.md
├── docker-compose.yml
├── backend/
├── frontend/
├── backoffice/
├── mobile/
├── docs/
└── .agents/
El docker-compose.yml orquesta backend, frontend, backoffice, PostgreSQL y almacenamiento de objetos para desarrollo y pruebas locales. Revisa docs/deployment.md para detalles de ejecución y configuración.
El proyecto utiliza archivos .env separados para cada módulo, facilitando la configuración y el despliegue independiente.
Para facilitar la configuración inicial, se han creado archivos .env centralizados en la raíz:
.env_backend: Variables de Django, PostgreSQL y usuarios seed.env_backoffice: Variables de Vite para el panel administrativo.env_frontend: Variables de Vite para el sitio público
# Copiar desde raíz o usar directamente
cp .env_backend backend/.env
# O usar el existente: backend/.envVariables principales:
DATABASE_URL: Conexión PostgreSQLDJANGO_SECRET_KEY: Clave secreta de DjangoADMIN_USER/ADMIN_PASSWORD: Credenciales del superusuario (yampi/thos)SYSTEM_USER/SYSTEM_PASSWORD: Credenciales del usuario sistema (gaudeix/gaudeix@2023)
# Copiar desde raíz o usar directamente
cp .env_backoffice backoffice/.env.local
# O usar el existente: backoffice/.env.localVariables principales:
VITE_API_BASE_URL: URL base del API (http://localhost:8000/api/v1)VITE_ADMIN_USER/VITE_ADMIN_PASSWORD: Credenciales de test
# Copiar desde raíz o usar directamente
cp .env_frontend frontend/.env.local
# O usar el existente: frontend/.env.localVariables principales:
VITE_API_BASE_URL: URL base del API (http://localhost:8000/api/v1ohttp://localhost:8000/api)
Más detalle: frontend/README.md
Host: localhost
Port: 5432
Database: migration
User: postgres
Password: thosEl comando python manage.py seed_users creará automáticamente:
-
Admin (Superusuario):
- Username:
yampi - Password:
thos - Permisos: Staff + Superuser
- Username:
-
System (Usuario normal):
- Username:
gaudeix - Password:
gaudeix@2023 - Permisos: Usuario estándar
- Username:
Consulta la guía de variables de entorno para conocer los archivos .env requeridos, los valores obligatorios/opcionales por módulo y las recomendaciones de sincronización con GitHub Actions y Dokploy.
- Los issues listos para migrar el proceso de publicación están descritos en
docs/migration_issues.md, con títulos, cuerpos y combinaciones de labels sugeridas. - Crea o sincroniza las labels del repositorio con la guía de
docs/GITHUB_LABELS.mdantes de registrar los issues.
Antes de solicitar un merge, ejecuta estos comandos en la raíz del repositorio según el stack modificado para evitar regresiones:
-
Frontend (type-check + tests):
pnpm --filter frontend type-check && pnpm --filter frontend test -- --run
-
Backoffice (type-check + tests + clean:js):
pnpm --filter backoffice type-check && pnpm --filter backoffice test && pnpm --filter backoffice clean:js
-
Backend (tests + lint/format):
cd backend && python3 -m pytest && ruff check . && ruff format --check .
-
Consulta primero
/docsyAGENTS.mdpara entender alcance, prioridades, dependencias y reglas vigentes. -
Usa la ruta Docker-first documentada en
AGENTS.mdcuando el ticket dependa de backend, datos, colas, automatizaciones o media. -
Ejecuta la validación adecuada al stack modificado antes de solicitar merge.
-
Al iniciar una contribución, sincroniza el contexto, documenta hallazgos relevantes y registra el cierre cuando cambie documentación operativa.
- Mantener el desacoplamiento total entre backend y frontend mediante comunicación exclusiva vía APIs REST.
- Diseñar módulos escalables y versionados que faciliten la evolución independiente de cada capa.
- Consultar siempre
/docs,AGENTS.mdyAGENTS_CLOUD.mdcomo fuentes de verdad antes de tomar decisiones técnicas. - Incluir pruebas, migraciones, despliegues automatizados y observabilidad como parte integral de la plataforma modernizada.
Para garantizar un entorno de desarrollo consistente en Windows:
-
Entorno Virtual:
- Se utiliza
.venv_win(no.venv) para el backend. - IMPORTANTE: Siempre que trabajes en local, debes activar este entorno antes de ejecutar comandos de Django.
- Se utiliza
-
Inicio Rápido:
-
Inicia primero Docker Desktop en Windows.
-
Desde la raíz del repo, ejecuta
docker compose up --build -d. -
Si la base está vacía o has recreado volúmenes, ejecuta además:
docker compose exec -T backend python manage.py migrate docker compose exec -T backend python manage.py seed_all --noinput
-
Si usas VS Code, la tarea recomendada es
Docker: Bootstrap Canonical Local.
-
-
Automatización (.github):
- Se han configurado workflows en
.github/workflowspara ejecutar pruebas y verificaciones automáticamente en cada push o Pull Request.
- Se han configurado workflows en