# GAMILIT - Monorepo **Version:** 2.0 (RFC-0001) **Fecha migración:** 2025-11-01 **Estado:** 🚧 En migración desde legacy repos --- ## 📚 Qué es GAMILIT **GAMILIT** (Gamificación Maya para la Lectoescritura en Tecnología) es una plataforma educativa que mejora las habilidades de lectoescritura en estudiantes de educación básica mediante gamificación basada en la cultura maya y aprendizaje adaptativo con IA. **Target:** Estudiantes de primaria y secundaria en México **Diferenciadores:** Rangos maya + IA adaptativa + Tracking detallado --- ## 🗂️ Estructura del Monorepo ``` /gamilit/projects/gamilit/ ├── apps/ # Aplicaciones │ ├── backend/ # API NestJS (migrado de gamilit-platform-backend) │ ├── frontend/ # Frontend React SPA (migrado de gamilit-platform-web) │ ├── database/ # Base de datos PostgreSQL │ │ ├── ddl/ # Definiciones de esquema │ │ ├── migrations/ # Migraciones │ │ ├── seeds/ # Datos de prueba │ │ └── scripts/ # Scripts de mantenimiento │ └── devops/ # Scripts de sincronización y validación │ ├── devops/ # Deployment y CI/CD │ ├── docker/ # Dockerfiles │ ├── github-actions/ # Workflows CI/CD │ └── scripts/ # Scripts deployment (migrado de gamilit-deployment-scripts) │ ├── docs/ # Documentación (migrada de gamilit-docs) │ ├── 00-overview/ # Visión general y onboarding │ ├── 01-requerimientos/ # Product requirements │ ├── 02-especificaciones-tecnicas/ # Technical specs │ ├── 03-desarrollo/ # Development guides │ ├── 04-planificacion/ # Sprints, épicas, roadmap │ ├── QUICK-REFERENCE/ # Guías rápidas │ ├── adr/ # Architecture Decision Records │ └── standards/ # Estándares y convenciones │ ├── orchestration/ # Orquestación de agentes │ ├── prompts/ # Prompts para subagentes │ ├── playbooks/ # Playbooks de orquestación │ └── runners/ # Scripts de ejecución │ ├── .claude/ # Configuración Claude Code │ ├── commands/ # Slash commands │ └── settings.json # Settings │ └── artifacts/ # Artefactos generados ├── reports/ # Reportes de análisis └── validations/ # Validaciones automáticas ``` --- ## 🚀 Quick Start ### Para Desarrolladores ```bash # 1. Clonar el monorepo git clone gamilit cd gamilit/projects/gamilit # 2. Ver documentación cat docs/00-overview/ONBOARDING.md # 3. Setup del backend cd apps/backend npm install npm run start:dev # 4. Setup del frontend cd apps/frontend npm install npm run dev ``` ### Para Stakeholders/PM ```bash # Leer resumen ejecutivo cat docs/00-overview/RESUMEN-EJECUTIVO.md # Ver roadmap cat docs/04-planificacion/ROADMAP.md # Ver métricas cat artifacts/reports/METRICAS-ACTUALES.md ``` --- ## 🚢 Despliegue en Producción ### Servidor de Producción - **IP:** 74.208.126.102 - **Backend:** Puerto 3006 (2 instancias cluster) - **Frontend:** Puerto 3005 (1 instancia) - **Gestor:** PM2 ### Despliegue Rápido ```bash # 1. Verificar que todo está listo ./scripts/pre-deploy-check.sh # 2. Build para producción ./scripts/build-production.sh # 3. Desplegar con PM2 ./scripts/deploy-production.sh ``` ### URLs de Acceso - **Frontend:** http://74.208.126.102:3005 - **Backend API:** http://74.208.126.102:3006/api - **API Docs:** http://74.208.126.102:3006/api/docs ### Comandos PM2 ```bash pm2 status # Ver estado de procesos pm2 logs # Ver logs en tiempo real pm2 restart all # Reiniciar todos los procesos pm2 monit # Monitor interactivo ``` ### Documentación Completa Ver la guía completa de despliegue en: [docs/95-guias-desarrollo/DEPLOYMENT-GUIDE.md](./docs/95-guias-desarrollo/DEPLOYMENT-GUIDE.md) --- ## 📖 Documentación Principal | Documento | Descripción | Audiencia | |-----------|-------------|-----------| | [docs/00-overview/VISION.md](./docs/00-overview/VISION.md) | Visión del producto | Todos | | [docs/01-requerimientos/](./docs/01-requerimientos/) | Requerimientos funcionales | PO, PM, Devs | | [docs/02-especificaciones-tecnicas/](./docs/02-especificaciones-tecnicas/) | Specs técnicas | Tech Lead, Devs | | [docs/03-desarrollo/](./docs/03-desarrollo/) | Guías de desarrollo | Developers | | [docs/QUICK-REFERENCE/](./docs/QUICK-REFERENCE/) | Guías rápidas | Todos | --- ## 🎯 Features Principales ### Sistema de Gamificación - **Rangos Maya:** 5 niveles (NACOM → BATAB → HOLCATTE → GUERRERO → MERCENARIO) - **Multiplicadores:** Por rango y racha - **Recompensas:** Puntos, insignias, logros ### Evaluación Adaptativa - **Tipos de quiz:** Opción múltiple, verdadero/falso, respuesta corta, matching - **IA Adaptativa:** Ajuste de dificultad en tiempo real - **Tracking:** Progreso detallado por módulo ### Roles y Permisos - **Admin:** Gestión completa del sistema - **Teacher:** Crear materias, diseñar quizzes, ver progreso - **Student:** Tomar quizzes, ganar rangos, ver progreso personal --- ## 🛠️ Stack Tecnológico | Componente | Tecnología | Versión | |------------|-----------|---------| | **Backend** | NestJS + TypeScript | 11.x | | **Frontend** | React + TypeScript | 19.x | | **State Management** | Zustand | 5.x | | **Styling** | Tailwind CSS | 4.x | | **Base de Datos** | PostgreSQL | 16.x | | **ORM** | TypeORM | 0.3.x | | **Autenticación** | JWT + Passport | - | | **CI/CD** | GitHub Actions | - | | **Deployment** | Docker + PM2 | - | --- ## 🔐 Constants SSOT (Single Source of Truth) **Implementado:** Fase 0 - Ciclo 5 (2025-11-02) **Política:** [POLITICA-CONSTANTS-SSOT.md](../../../docs-analysis/miniworkspace-migration/06-agents/migracion-desarrollo/POLITICA-CONSTANTS-SSOT.md) **Arquitectura:** [CONSTANTS-ARCHITECTURE.md](../../../docs-analysis/miniworkspace-migration/06-agents/migracion-desarrollo/CONSTANTS-ARCHITECTURE.md) ### ¿Qué es? Sistema de constantes centralizadas que garantiza **type-safety** y **sincronización automática** entre Backend, Frontend y Database. ### Reglas de Oro 1. ❌ **NO hardcodear** nombres de schemas, tablas, rutas API, o ENUMs 2. ✅ **SIEMPRE importar** desde archivos de constantes 3. ✅ **ACTUALIZAR constantes** al agregar nuevas entidades 4. ✅ **SINCRONIZAR ENUMs** Backend ↔ Frontend con script 5. ✅ **VALIDAR en CI/CD** antes de merge ### Archivos de Constantes ``` apps/backend/src/shared/constants/ ├── database.constants.ts # Schemas y tablas PostgreSQL ├── routes.constants.ts # Rutas API Backend ├── enums.constants.ts # ENUMs compartidos (Backend source) └── index.ts # Barrel export apps/frontend/src/shared/constants/ ├── api-endpoints.ts # URLs de API endpoints ├── enums.constants.ts # ENUMs compartidos (auto-sincronizado) └── index.ts # Barrel export apps/devops/scripts/ ├── sync-enums.ts # Sincronización automática ENUMs ├── validate-constants-usage.ts # Detectar hardcoding (33 patrones) └── validate-api-contract.ts # Validar Backend ↔ Frontend sync ``` ### Ejemplos de Uso **❌ PROHIBIDO (Hardcoding):** ```typescript // Backend - Entity @Entity({ schema: 'auth_management', name: 'users' }) export class User { ... } // Frontend - Fetch await fetch('http://localhost:3000/api/v1/users/123'); ``` **✅ OBLIGATORIO (Constants):** ```typescript // Backend - Entity import { DB_SCHEMAS, DB_TABLES } from '@/shared/constants'; @Entity({ schema: DB_SCHEMAS.AUTH, name: DB_TABLES.AUTH.USERS }) export class User { ... } // Frontend - Fetch import { API_ENDPOINTS } from '@/shared/constants'; await fetch(API_ENDPOINTS.USERS.BY_ID('123')); ``` ### Scripts NPM ```bash # Sincronizar ENUMs Backend → Frontend npm run sync:enums # Validar que no haya hardcoding (detecta 33 patrones) npm run validate:constants # Validar que Backend y Frontend routes coincidan npm run validate:api-contract # Ejecutar todas las validaciones npm run validate:all # Auto-sync en postinstall (automático) npm install # ejecuta sync:enums automáticamente ``` ### CI/CD Enforcement El workflow `.github/workflows/validate-constants.yml` **bloquea PRs** si: - ❌ Se detecta hardcoding (violaciones P0) - ❌ Backend y Frontend routes no coinciden - ❌ ENUMs no están sincronizados **Status badge:** ![Constants SSOT](https://github.com/YOUR_ORG/gamilit/actions/workflows/validate-constants.yml/badge.svg) ### Pre-Commit Checklist Antes de hacer commit, ejecutar: ```bash # 1. Sincronizar ENUMs npm run sync:enums # 2. Validar todo npm run validate:all # 3. Si pasa, commit git add . git commit -m "feat: agregar nueva funcionalidad" ``` ### ¿Cuándo actualizar constantes? **Al crear nueva tabla Database:** 1. Crear DDL en `apps/database/ddl/schemas/{schema}/tables/{tabla}.sql` 2. Agregar entrada en `database.constants.ts` 3. Crear Entity usando la nueva constante **Al crear nueva ruta API:** 1. Agregar entrada en Backend `routes.constants.ts` 2. Agregar entrada en Frontend `api-endpoints.ts` 3. Ejecutar `npm run validate:api-contract` **Al crear nuevo ENUM:** 1. Definir en Backend `enums.constants.ts` 2. Ejecutar `npm run sync:enums` (copia automáticamente a Frontend) 3. Verificar sincronización con `diff` ### Cobertura Actual | Categoría | Estado | Elementos Mapeados | |-----------|--------|-------------------| | **Database Schemas** | ✅ 100% | 8 schemas | | **Database Tables** | ✅ 100% | 40 tablas | | **API Routes** | ✅ 100% | 75+ rutas | | **ENUMs** | ✅ 100% | 25 ENUMs | | **Backend Entities** | ⏳ 20% | 5/25 usando constantes | | **Frontend Calls** | ⏳ 0% | Pendiente refactor | **Objetivo:** 100% cobertura en Sprint 1 (Fase 1-3) ### Métricas de Calidad Ejecutar para ver reporte: ```bash npm run validate:constants ``` **Output esperado:** ``` ✅ EXCELENTE! No se encontraron violaciones de hardcoding. Todas las constantes están correctamente utilizadas. ``` ### Documentación Completa - **Arquitectura técnica:** [CONSTANTS-ARCHITECTURE.md](../../../docs-analysis/miniworkspace-migration/06-agents/migracion-desarrollo/CONSTANTS-ARCHITECTURE.md) - **Políticas obligatorias:** [POLITICA-CONSTANTS-SSOT.md](../../../docs-analysis/miniworkspace-migration/06-agents/migracion-desarrollo/POLITICA-CONSTANTS-SSOT.md) - **Plan de implementación:** [PLAN-MICROCICLO-5.md](../../../docs-analysis/miniworkspace-migration/06-agents/migracion-desarrollo/02-planes/PLAN-MICROCICLO-5.md) --- ## 📊 Estado de Migración **Fase actual:** Ciclo 1 - Migración de Documentación **Progreso:** 15% (estructura base creada) ### Checklist de Migración - [x] **Microciclo 1-1:** Estructura base creada - [x] Carpetas según RFC-0001 - [x] Git inicializado - [x] README.md principal - [ ] CODEOWNERS - [ ] .gitignore, .editorconfig - [ ] **Microciclo 1-2:** Migrar 01-requerimientos/ - [ ] **Microciclo 1-3:** Migrar 02-especificaciones-tecnicas/ - [ ] **Microciclo 1-4:** Migrar 03-desarrollo/ - [ ] **Microciclo 1-5:** Migrar 04-planificacion/ - [ ] **Microciclo 1-6:** Migrar QUICK-REFERENCE/ **Ver plan completo:** [docs-analysis/miniworkspace-migration/PLAN-MIGRACION-CONTENIDO.md](../../docs-analysis/miniworkspace-migration/PLAN-MIGRACION-CONTENIDO.md) --- ## 🔗 Repositorios Legacy (Pre-migración) - **gamilit-docs:** `/workspace-gamilit/projects/gamilit-docs/` - **gamilit-platform-backend:** `/workspace-gamilit/projects/gamilit-platform-backend/` - **gamilit-platform-web:** `/workspace-gamilit/projects/gamilit-platform-web/` - **gamilit-deployment-scripts:** `/workspace-gamilit/projects/gamilit-deployment-scripts/` --- ## 👥 CODEOWNERS Ver [CODEOWNERS](./CODEOWNERS) para responsabilidades por módulo. --- ## 📝 Changelog ### 2025-11-01 - v2.0-alpha (RFC-0001 Migration Start) - Creada estructura de monorepo según RFC-0001 - Inicializado git repository - Creado README.md principal --- ## 📞 Contacto **Product Owner:** [TBD] **Tech Lead:** [TBD] **Documentación:** [docs/](./docs/) **Issues:** [GitHub Issues] --- **Generado:** 2025-11-01 **Método:** Migración RFC-0001 con Claude Code **Análisis previo:** [docs-analysis/miniworkspace-migration/](../../docs-analysis/miniworkspace-migration/)