workspace/projects/gamilit/apps/_MAP.md
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- Configure workspace Git repository with comprehensive .gitignore
- Add Odoo as submodule for ERP reference code
- Include documentation: SETUP.md, GIT-STRUCTURE.md
- Add gitignore templates for projects (backend, frontend, database)
- Structure supports independent repos per project/subproject level

Workspace includes:
- core/ - Reusable patterns, modules, orchestration system
- projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.)
- knowledge-base/ - Reference code and patterns (includes Odoo submodule)
- devtools/ - Development tools and templates
- customers/ - Client implementations template

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 10:44:23 -06:00

606 lines
19 KiB
Markdown

# _MAP: apps/
**Última actualización:** 2025-11-07
**Estado:** 🟢 En desarrollo activo
**Versión:** 2.0 (RFC-0001)
---
## 📋 Propósito de esta Carpeta
Esta carpeta contiene **todo el código fuente** de las aplicaciones GAMILIT, incluyendo backend (API), frontend (SPA), base de datos (DDL/migrations), y scripts de DevOps.
**Arquitectura:** Monorepo con 4 aplicaciones principales
**Audiencia:**
- Desarrolladores Backend (Node.js/TypeScript)
- Desarrolladores Frontend (React/TypeScript)
- Database Administrators (PostgreSQL)
- DevOps Engineers
- Tech Leads
---
## 📁 Estructura de Contenido
### Aplicaciones Principales
| Aplicación | Propósito | Tecnología | Tamaño | Owner | Estado | _MAP.md |
|------------|-----------|------------|--------|-------|--------|---------|
| **backend/** | API REST + WebSocket | Node.js + Express + TypeScript | 108 MB | @backend-team | 🟢 Activo | ⚪ Pendiente |
| **frontend/** | SPA Multi-portal | React + Vite + TypeScript | 15 MB | @frontend-team | 🟢 Activo | ⚪ Pendiente |
| **database/** | Esquema DB + Migrations | PostgreSQL DDL + SQL | 3.8 MB | @database-team | 🟢 Activo | ⚪ Pendiente |
| **devops/** | Scripts DevOps + Validación | TypeScript scripts | 60 KB | @devops-team | 🟡 Parcial | ⚪ Pendiente |
---
## 🗂️ Detalle por Aplicación
### backend/ (108 MB)
**Descripción:** API REST + WebSocket para GAMILIT
**Tecnologías:**
- **Runtime:** Node.js 18+
- **Framework:** Express.js
- **Language:** TypeScript 5+ (strict mode)
- **Database:** PostgreSQL 15+ (via node-postgres)
- **Testing:** Jest
- **Linting:** ESLint + Prettier
- **Process Manager:** PM2
**Estructura:**
```
backend/
├── src/
│ ├── shared/ # Código compartido (utils, decorators, types)
│ │ ├── constants/ # Constants SSOT (database, routes, enums)
│ │ ├── types/ # Tipos TypeScript compartidos
│ │ ├── utils/ # Utilidades generales
│ │ └── decorators/ # Decoradores personalizados
│ ├── middleware/ # Middleware de Express
│ │ ├── auth.middleware.ts
│ │ ├── validation.middleware.ts
│ │ ├── error.middleware.ts
│ │ └── logging.middleware.ts
│ ├── config/ # Configuraciones
│ │ ├── database.config.ts
│ │ ├── jwt.config.ts
│ │ └── cors.config.ts
│ ├── database/ # Conexión DB, migrations, seeds
│ │ ├── connection.ts
│ │ └── pool.ts
│ ├── modules/ # Módulos de negocio (11 módulos)
│ │ ├── auth/
│ │ ├── educational/
│ │ ├── gamification/
│ │ ├── progress/
│ │ ├── social/
│ │ ├── content/
│ │ ├── admin/
│ │ ├── teacher/
│ │ ├── analytics/
│ │ ├── notifications/
│ │ └── system/
│ └── main.ts # Entry point
├── __tests__/ # Tests
├── dist/ # Build output
├── logs/ # Application logs
├── node_modules/ # Dependencies (largest folder)
├── package.json # NPM config
├── tsconfig.json # TypeScript config
├── jest.config.js # Jest config
├── .eslintrc.js # ESLint config
└── README.md # Documentación
```
**Scripts:**
```bash
npm run dev # Desarrollo con hot reload (ts-node-dev)
npm run build # Build producción
npm run start # Iniciar producción
npm test # Ejecutar tests (Jest)
npm run test:cov # Tests con coverage
npm run lint # Linter (ESLint)
npm run format # Formatear código (Prettier)
```
**Path Aliases:**
- `@shared/*``src/shared/*`
- `@middleware/*``src/middleware/*`
- `@config/*``src/config/*`
- `@database/*``src/database/*`
- `@modules/*``src/modules/*`
**Métricas:**
- **LOC:** ~45,000 líneas
- **Módulos:** 11 módulos funcionales
- **Endpoints:** 470+ API endpoints
- **Tests:** ~40 tests (objetivo: 210)
- **Coverage:** ~15% (objetivo: 70%)
**Port:** 3000 (default)
**Estado:** ✅ En producción (desarrollo activo)
**_MAP.md:** ⚪ Pendiente creación
**Ver documentación:** [docs/03-desarrollo/backend/](../docs/03-desarrollo/backend/)
---
### frontend/ (15 MB)
**Descripción:** SPA Multi-portal con 3 aplicaciones (Student, Teacher, Admin)
**Tecnologías:**
- **Framework:** React 18+
- **Build Tool:** Vite 5+
- **Language:** TypeScript 5+ (strict mode)
- **Styling:** Tailwind CSS 3+
- **Router:** React Router v6
- **State Management:** Zustand (8 stores)
- **Forms:** React Hook Form + Zod validation
- **HTTP Client:** Axios
- **Animations:** Framer Motion
- **Testing:** Vitest + React Testing Library
- **Storybook:** 7+ (component documentation)
**Arquitectura:** Feature-Sliced Design (FSD)
**Estructura:**
```
frontend/
├── src/
│ ├── shared/ # Código compartido (components, hooks, utils)
│ │ ├── components/ # 180+ componentes UI reutilizables
│ │ ├── hooks/ # Custom React hooks
│ │ ├── utils/ # Utilidades generales
│ │ ├── types/ # Tipos TypeScript (sincronizados con backend)
│ │ └── constants/ # Constantes (API endpoints, ENUMs)
│ ├── services/ # API clients, WebSocket
│ │ ├── api/ # API REST clients
│ │ └── websocket/ # Socket.IO client
│ ├── app/ # Providers, layouts, routing
│ │ ├── providers/ # Context providers
│ │ ├── layouts/ # Layout components
│ │ └── router/ # React Router config
│ ├── features/ # Features de negocio (por rol)
│ │ ├── student/ # Portal estudiante
│ │ ├── teacher/ # Portal profesor
│ │ └── admin/ # Portal administrador
│ └── pages/ # Páginas/Vistas
│ ├── student/
│ ├── teacher/
│ └── admin/
├── public/ # Assets estáticos
├── node_modules/ # Dependencies
├── dist/ # Build output
├── package.json # NPM config
├── vite.config.ts # Vite config
├── tsconfig.json # TypeScript config
├── tailwind.config.js # Tailwind config
├── .storybook/ # Storybook config
└── README.md # Documentación
```
**Scripts:**
```bash
npm run dev # Desarrollo (Vite)
npm run build # Build producción
npm run preview # Preview build
npm test # Tests (Vitest)
npm run test:ui # Tests con UI
npm run lint # Linter (ESLint)
npm run format # Formatear (Prettier)
npm run storybook # Storybook dev server
```
**Path Aliases:**
- `@/*``src/*`
- `@shared/*``src/shared/*`
- `@components/*``src/shared/components/*`
- `@hooks/*``src/shared/hooks/*`
- `@utils/*``src/shared/utils/*`
- `@types/*``src/shared/types/*`
- `@services/*``src/services/*`
- `@app/*``src/app/*`
- `@features/*``src/features/*`
- `@pages/*``src/pages/*`
**Métricas:**
- **LOC:** ~85,000 líneas
- **Componentes:** 180+ componentes
- **Mecánicas educativas:** 33 implementadas
- **Zustand stores:** 8 (auth, gamification, progress, exercise, notification, social, tenant, ui)
- **Tests:** ~15 tests (objetivo: 60)
- **Coverage:** ~13% (objetivo: 70%)
**Port:** 5173 (Vite default)
**Features:**
- Mobile-first responsive design
- Dark mode support
- Accesibilidad WCAG 2.1 AA
- PWA ready
**Estado:** ✅ En producción (desarrollo activo)
**_MAP.md:** ⚪ Pendiente creación
**Ver documentación:** [docs/03-desarrollo/frontend/](../docs/03-desarrollo/frontend/)
---
### database/ (3.8 MB)
**Descripción:** Esquema completo de PostgreSQL, DDL, migrations y seeds
**Tecnologías:**
- **Database:** PostgreSQL 16+
- **SQL:** Pure SQL (DDL)
- **Migrations:** Custom versioning
- **Scripts:** Bash + psql
**Estructura:**
```
database/
├── ddl/ # Definiciones de esquema (DDL)
│ ├── schemas/ # 9 schemas con objetos DB
│ │ ├── auth_management/ # Autenticación
│ │ │ ├── tables/ # 12 tablas
│ │ │ ├── indexes/ # Índices
│ │ │ ├── functions/ # Funciones
│ │ │ ├── triggers/ # Triggers
│ │ │ └── rls-policies/ # RLS policies
│ │ ├── educational_content/ # Contenido educativo
│ │ ├── gamification_system/ # Gamificación
│ │ ├── progress_tracking/ # Progress tracking
│ │ ├── social_features/ # Social
│ │ ├── content_management/ # CMS
│ │ ├── audit_logging/ # Auditoría
│ │ ├── system_configuration/ # Config
│ │ └── public/ # Schema público
│ ├── base-schema.sql # Schema base inicial
│ └── README.md # Guía de DDL
├── migrations/ # Migraciones versionadas
│ ├── 001_initial_schema.sql
│ ├── 002_add_rls_policies.sql
│ └── ...
├── seeds/ # Datos de prueba
│ ├── dev/ # Seeds para desarrollo
│ └── test/ # Seeds para testing
└── scripts/ # Scripts de mantenimiento
├── backup.sh
├── restore.sh
└── migrate.sh
```
**Esquema DB:**
- **Schemas:** 9 (auth_management, educational_content, gamification_system, etc.)
- **Tablas:** 44 tablas principales
- **Índices:** 279+ índices (optimización)
- **Funciones:** 50+ funciones PL/pgSQL
- **Triggers:** 35+ triggers
- **RLS Policies:** 159 policies planeadas (41 activas)
- **Views:** 15+ vistas
- **Materialized Views:** 5+ (performance)
**Sistema de Archivos DDL:**
Cada schema tiene:
- `tables/_MAP.md` - Lista de tablas
- `indexes/_MAP.md` - Índices
- `functions/_MAP.md` - Funciones
- `triggers/_MAP.md` - Triggers
- `rls-policies/_MAP.md` - Políticas RLS
- `views/_MAP.md` - Vistas
**Total _MAP.md en database/:** 85+ archivos (sistema SIMCO ejemplar)
**Estado:** ✅ Bien estructurado y documentado
**_MAP.md:** ⚪ Pendiente creación (raíz de database/)
**Ver documentación:** [docs/03-desarrollo/base-de-datos/](../docs/03-desarrollo/base-de-datos/)
---
### devops/ (60 KB)
**Descripción:** Scripts de DevOps y validación
**Tecnologías:**
- **Language:** TypeScript + Bash
- **Validaciones:** ts-node scripts
**Estructura:**
```
devops/
└── scripts/ # Scripts de automatización
├── sync-enums.ts # Sincronizar ENUMs Backend → Frontend
├── validate-constants-usage.ts # Detectar hardcoding (33 patrones)
└── validate-api-contract.ts # Validar Backend ↔ Frontend sync
```
**Scripts Disponibles (desde root):**
```bash
npm run sync:enums # Sincronizar ENUMs Backend → Frontend
npm run validate:constants # Detectar hardcoding (33 patrones)
npm run validate:api-contract # Validar Backend ↔ Frontend sync
npm run validate:all # Todas las validaciones
npm run postinstall # Auto-sync ENUMs (automático)
```
**Constants SSOT (Single Source of Truth):**
- Sistema de constantes centralizadas
- Backend como source of truth
- Sincronización automática a Frontend
- Validación en CI/CD
**Estado:** 🟡 Funcional pero incompleto
**Pendiente:**
- Docker configs
- CI/CD workflows
- Kubernetes manifests
- Deployment scripts
**_MAP.md:** ⚪ Pendiente creación
**Ver documentación:** [README.md (root)](../README.md#constants-ssot)
---
## 🔗 Interdependencias
### Flujo de Datos
```
┌────────────────────────────────────────────────────────┐
│ frontend/ │
│ React SPA (Student, Teacher, Admin) │
│ Port 5173 │
└────────────────────┬───────────────────────────────────┘
│ REST API (Axios)
│ WebSocket (Socket.IO)
┌────────────────────▼───────────────────────────────────┐
│ backend/ │
│ Express.js API + WebSocket Server │
│ Port 3000 │
└────────────────────┬───────────────────────────────────┘
│ node-postgres (pg)
│ TypeORM (planeado)
┌────────────────────▼───────────────────────────────────┐
│ database/ │
│ PostgreSQL 16+ (9 schemas, 44 tablas) │
│ Port 5432 │
└────────────────────────────────────────────────────────┘
│ DDL, Migrations, Seeds
database/ddl/
```
### Interdependencias Entre Apps
**backend/ ↔ database/**
- Backend consume DDL de database/
- Constants referencian schemas/tablas
- Queries usan funciones PL/pgSQL
- RLS policies enforced en queries
**frontend/ ↔ backend/**
- Frontend consume API endpoints
- Tipos compartidos (ENUMs sincronizados)
- WebSocket para real-time notifications
- Axios interceptors para auth (JWT)
**devops/ → backend/ + frontend/**
- Scripts validan consistencia
- Sincronización automática de ENUMs
- Detección de hardcoding
- Validación de contratos API
---
## 📊 Métricas Globales
### Líneas de Código
| Aplicación | LOC | Porcentaje |
|------------|-----|------------|
| **Frontend** | ~85,000 | 65% |
| **Backend** | ~45,000 | 35% |
| **Database** | ~10,000 (SQL) | - |
| **DevOps** | ~500 | - |
| **TOTAL** | **~130,000** | 100% |
### Test Coverage
| Aplicación | Tests | Coverage | Objetivo |
|------------|-------|----------|----------|
| **Backend** | ~40 | ~15% | 70% |
| **Frontend** | ~15 | ~13% | 70% |
| **TOTAL** | **~55** | **~14%** | **70%** |
**Gap crítico:** 55 tests vs 300 objetivo (🔴 81.7% faltante)
### Tamaño de Aplicaciones
| Aplicación | Tamaño | node_modules | Código |
|------------|--------|--------------|--------|
| **Backend** | 108 MB | ~95 MB | ~13 MB |
| **Frontend** | 15 MB | ~10 MB | ~5 MB |
| **Database** | 3.8 MB | - | 3.8 MB |
| **DevOps** | 60 KB | - | 60 KB |
---
## 🚨 Issues Conocidos
### P0 (Crítico)
- **P0-001:** Test coverage crítico (14% vs 70% objetivo)
- Backend: 40 tests (objetivo: 210)
- Frontend: 15 tests (objetivo: 60)
- **Impacto:** Alto riesgo de bugs en producción
- **Esfuerzo:** 20-30 horas
### P1 (Alto)
- **P1-001:** Falta _MAP.md en apps principales
- backend/, frontend/, database/, devops/ sin _MAP.md
- **Impacto:** Navegación para agentes incompleta
- **Esfuerzo:** 4-6 horas
- **P1-002:** DevOps incompleto
- Falta: Docker, CI/CD, Kubernetes
- **Impacto:** Deployment manual y propenso a errores
- **Esfuerzo:** 10-15 horas
### P2 (Medio)
- **P2-001:** Backend no usa TypeORM
- Usa node-postgres (pg) directamente
- Queries SQL manuales propensas a errores
- Recomendación: Migrar a TypeORM o Prisma
- **P2-002:** Frontend no implementa PWA
- PWA ready pero no configurado
- Service workers no implementados
---
## 📐 Estándares Aplicables
### Nomenclatura de Archivos
**Backend/Frontend:**
- `kebab-case.ts` - Archivos de código
- `PascalCase.tsx` - Componentes React
- `camelCase` - Variables y funciones
- `UPPER_SNAKE_CASE` - Constantes
**Database:**
- `kebab-case.sql` - Archivos SQL
- `01-nombre-tabla.sql` - Con prefijo numérico
- `snake_case` - Nombres de tablas/columnas
### Path Aliases
**Todos los proyectos usan path aliases**
- Evitar imports relativos (`../../../`)
- Usar aliases (`@shared/*`, `@modules/*`)
- Configurado en tsconfig.json
### Linting y Formatting
**ESLint + Prettier en todos los proyectos**
- Configuración compartida desde root
- Consistent code style
- Pre-commit hooks (planeado)
---
## 🔍 Validación (Go/No-Go)
### Criterios de Aceptación - Apps
- [x] Backend funcional y desplegado
- [x] Frontend funcional y desplegado
- [x] Database schema completo
- [x] Constants SSOT implementado
- [ ] Test coverage ≥70% (14% actual) 🔴
- [ ] _MAP.md en aplicaciones principales (0/4) 🔴
- [ ] DevOps completo (Docker, CI/CD) 🔴
- [ ] PWA configurado 🟡
**Decisión:** 🟡 **Parcial GO** - Funcional pero con deuda técnica
---
## 📞 Contacto y Soporte
**Owner principal:** @tech-lead
**Maintainers:**
- Backend: @backend-team
- Frontend: @frontend-team
- Database: @database-team
- DevOps: @devops-team
**Reporte de issues:**
- GitHub Issues: [GAMILIT Apps]
- Slack: #gamilit-dev
---
## 🎯 Próximos Pasos
### Fase 1 - Urgente (Esta Semana)
1. ✅ _MAP.md creado (este archivo)
2. ⬜ Crear _MAP.md en 4 aplicaciones principales
3. ⬜ Implementar tests críticos (exercise engine)
4. ⬜ Configurar Docker para desarrollo
### Fase 2 - Alta Prioridad (Próximas 2 Semanas)
5. ⬜ Aumentar test coverage a 40%
6. ⬜ Implementar CI/CD básico
7. ⬜ Configurar PWA
8. ⬜ Documentar APIs faltantes
### Fase 3 - Media Prioridad (Próximo Mes)
9. ⬜ Test coverage 70%
10. ⬜ Kubernetes manifests
11. ⬜ Migrar a TypeORM (considerar)
12. ⬜ Storybook completo
---
## 🚀 Quick Start
### Desarrollo Local
```bash
# 1. Instalar dependencias
npm install # En root (instala todas las apps)
# 2. Setup database
cd apps/database
psql -U postgres -f ddl/base-schema.sql
# Ejecutar migrations y seeds
# 3. Variables de entorno
cp apps/backend/.env.example apps/backend/.env
cp apps/frontend/.env.example apps/frontend/.env
# Configurar variables
# 4. Iniciar todo
cd ../.. # Volver a root
npm run dev # Backend + Frontend concurrentemente
# O iniciar por separado:
npm run backend:dev # Solo backend (port 3000)
npm run frontend:dev # Solo frontend (port 5173)
```
### Scripts Globales
```bash
# Desde root del monorepo:
npm run dev # Backend + Frontend
npm run build # Build completo
npm run test # Tests completos
npm run lint # Lint completo
npm run validate:all # Validaciones SSOT
```
---
**Generado:** 2025-11-07
**Método:** Sistema SIMCO - Fase 1 (Mapas P0)
**Próxima actualización:** Tras crear submapas
**Versión:** 1.0.0