- 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>
606 lines
19 KiB
Markdown
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
|