workspace/projects/gamilit/docs/00-vision-general/ONBOARDING.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

754 lines
18 KiB
Markdown

# Guía de Onboarding - GAMILIT Platform
**Versión:** 1.0
**Última actualización:** 2025-11-07
**Audiencia:** Nuevos desarrolladores
**Tiempo estimado:** 2-3 horas
---
## 📋 Tabla de Contenidos
1. [Bienvenida](#bienvenida)
2. [Prerrequisitos](#prerrequisitos)
3. [Clonar el Repositorio](#clonar-el-repositorio)
4. [Configurar Base de Datos](#configurar-base-de-datos)
5. [Configurar Backend](#configurar-backend)
6. [Configurar Frontend](#configurar-frontend)
7. [Verificar Instalación](#verificar-instalación)
8. [Siguientes Pasos](#siguientes-pasos)
9. [Troubleshooting](#troubleshooting)
10. [Recursos Útiles](#recursos-útiles)
---
## 🎉 Bienvenida
¡Bienvenido al equipo de GAMILIT Platform! Esta guía te ayudará a configurar tu entorno de desarrollo local en 2-3 horas.
**GAMILIT Platform** es una plataforma educativa gamificada que combina:
- 33 mecánicas educativas de comprensión lectora
- Sistema de gamificación con rangos Maya
- Arquitectura multi-tenant escalable
- Stack moderno: React 19 + NestJS + PostgreSQL
Para entender la visión del producto, lee primero [VISION.md](./VISION.md).
---
## ✅ Prerrequisitos
Antes de empezar, asegúrate de tener instalado:
### Software Requerido
| Software | Versión Mínima | Verificar |
|----------|----------------|-----------|
| **Node.js** | 18.0.0+ | `node --version` |
| **npm** | 9.0.0+ | `npm --version` |
| **PostgreSQL** | 15.0+ | `psql --version` |
| **Git** | 2.0+ | `git --version` |
### Software Recomendado
- **Editor:** VS Code con extensiones:
- ESLint
- Prettier - Code formatter
- TypeScript + JavaScript
- Tailwind CSS IntelliSense
- PostgreSQL (Chris Kolkman)
- **Cliente PostgreSQL:** pgAdmin 4 o DBeaver (opcional)
- **Cliente API:** Postman o Insomnia (opcional)
- **Terminal:** iTerm2 (macOS), Windows Terminal (Windows), o terminal nativa
### Instalación de Prerrequisitos
**macOS (usando Homebrew):**
```bash
# Instalar Homebrew si no lo tienes
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Instalar Node.js (incluye npm)
brew install node
# Instalar PostgreSQL
brew install postgresql@15
brew services start postgresql@15
# Verificar instalaciones
node --version # Debe ser >= 18.0.0
npm --version # Debe ser >= 9.0.0
psql --version # Debe ser >= 15.0
```
**Ubuntu/Debian:**
```bash
# Node.js 18+ (usando NodeSource)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# PostgreSQL 15+
sudo apt-get install postgresql-15 postgresql-contrib-15
# Verificar instalaciones
node --version
npm --version
psql --version
```
**Windows:**
1. Descargar Node.js 18+ desde https://nodejs.org/
2. Descargar PostgreSQL 15+ desde https://www.postgresql.org/download/windows/
3. Instalar Git desde https://git-scm.com/download/win
---
## 📦 Clonar el Repositorio
### 1. Clonar el monorepo
```bash
# Clonar repositorio (reemplazar con URL real)
git clone https://github.com/YOUR_ORG/gamilit.git
cd gamilit/projects/gamilit
# Verificar estructura
ls -la
# Deberías ver: apps/, docs/, orchestration/, artifacts/, etc.
```
### 2. Explorar la estructura
```bash
# Ver estructura principal
tree -L 2 -d
# Leer documentación clave
cat docs/00-overview/VISION.md
cat README.md
```
---
## 🗄️ Configurar Base de Datos
### 1. Crear base de datos y usuario
```bash
# Iniciar PostgreSQL (si no está corriendo)
# macOS: brew services start postgresql@15
# Ubuntu: sudo systemctl start postgresql
# Windows: Iniciar desde servicios
# Conectar como superusuario
psql postgres
# Crear usuario y base de datos
CREATE USER gamilit_user WITH PASSWORD 'gamilit_dev_2025';
CREATE DATABASE gamilit_platform OWNER gamilit_user;
GRANT ALL PRIVILEGES ON DATABASE gamilit_platform TO gamilit_user;
# Salir
\q
```
### 2. Verificar conexión
```bash
# Conectar a la base de datos
psql -U gamilit_user -d gamilit_platform -h localhost
# Si funciona, verás:
# gamilit_platform=>
# Salir
\q
```
### 3. Ejecutar DDL (Definiciones de esquema)
```bash
# Navegar a carpeta de database
cd apps/database
# Ejecutar esquema base
psql -U gamilit_user -d gamilit_platform -h localhost -f ddl/base-schema.sql
# Ejecutar DDL por schema (orden importante)
psql -U gamilit_user -d gamilit_platform -h localhost -f ddl/schemas/auth_management/schema.sql
psql -U gamilit_user -d gamilit_platform -h localhost -f ddl/schemas/educational_content/schema.sql
psql -U gamilit_user -d gamilit_platform -h localhost -f ddl/schemas/gamification_system/schema.sql
# ... (continuar con otros schemas según necesidad)
```
### 4. Cargar datos de prueba (seeds)
```bash
# Cargar seeds de desarrollo
psql -U gamilit_user -d gamilit_platform -h localhost -f seeds/dev/01-users.sql
psql -U gamilit_user -d gamilit_platform -h localhost -f seeds/dev/02-modules.sql
psql -U gamilit_user -d gamilit_platform -h localhost -f seeds/dev/03-exercises.sql
# Verificar datos
psql -U gamilit_user -d gamilit_platform -h localhost -c "SELECT COUNT(*) FROM auth_management.users;"
# Debería mostrar algunos usuarios de prueba
```
**Nota:** El orden de ejecución de DDL es importante debido a dependencias entre schemas. Ver [apps/database/_MAP.md](../../apps/database/_MAP.md) para detalles.
---
## 🔧 Configurar Backend
### 1. Navegar a carpeta backend
```bash
cd /path/to/gamilit/projects/gamilit/apps/backend
```
### 2. Instalar dependencias
```bash
npm install
# Esto puede tomar 2-3 minutos
```
### 3. Configurar variables de entorno
```bash
# Copiar template de .env
cp .env.example .env
# Editar .env con tu editor favorito
nano .env # o code .env si usas VS Code
```
**Contenido de `.env`:**
```bash
# Database
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=gamilit_user
DB_PASSWORD=gamilit_dev_2025
DB_DATABASE=gamilit_platform
# JWT
JWT_SECRET=your-super-secret-jwt-key-change-in-production
JWT_EXPIRES_IN=1h
JWT_REFRESH_EXPIRES_IN=7d
# Application
NODE_ENV=development
PORT=3000
API_PREFIX=/api/v1
# CORS
CORS_ORIGIN=http://localhost:5173
# Rate Limiting
RATE_LIMIT_TTL=60
RATE_LIMIT_MAX=100
# Logging
LOG_LEVEL=debug
```
**⚠️ IMPORTANTE:** Cambia `JWT_SECRET` por un valor único y seguro. Puedes generarlo con:
```bash
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
```
### 4. Verificar configuración
```bash
# Verificar TypeScript
npm run build
# Si hay errores de compilación, revisar tsconfig.json
```
### 5. Iniciar backend en modo desarrollo
```bash
npm run dev
```
**Output esperado:**
```
[Nest] 12345 - 2025-11-07 10:00:00 LOG [NestFactory] Starting Nest application...
[Nest] 12345 - 2025-11-07 10:00:00 LOG [InstanceLoader] AppModule dependencies initialized
[Nest] 12345 - 2025-11-07 10:00:01 LOG [RoutesResolver] AuthController {/api/v1/auth}:
[Nest] 12345 - 2025-11-07 10:00:01 LOG [RouterExplorer] Mapped {/api/v1/auth/login, POST} route
[Nest] 12345 - 2025-11-07 10:00:02 LOG [NestApplication] Nest application successfully started
[Nest] 12345 - 2025-11-07 10:00:02 LOG Application is running on: http://localhost:3000
```
### 6. Verificar endpoints
Abre otra terminal y prueba:
```bash
# Health check
curl http://localhost:3000/api/health
# Debería retornar: {"status":"ok","timestamp":"..."}
# Health check de DB
curl http://localhost:3000/api/health/db
# Debería retornar: {"status":"ok","database":"connected"}
```
**🎉 ¡Backend configurado correctamente!**
---
## 🎨 Configurar Frontend
### 1. Navegar a carpeta frontend
```bash
# Abrir nueva terminal
cd /path/to/gamilit/projects/gamilit/apps/frontend
```
### 2. Instalar dependencias
```bash
npm install
# Esto puede tomar 2-3 minutos
```
### 3. Configurar variables de entorno
```bash
# Copiar template de .env
cp .env.example .env.local
# Editar .env.local
nano .env.local # o code .env.local
```
**Contenido de `.env.local`:**
```bash
# API Backend
VITE_API_BASE_URL=http://localhost:3000/api/v1
# WebSocket (si aplica)
VITE_WS_URL=ws://localhost:3000
# Environment
VITE_ENV=development
# Feature Flags (opcional)
VITE_ENABLE_SOCIAL_FEATURES=false
VITE_ENABLE_TEACHER_PORTAL=true
VITE_ENABLE_ADMIN_PORTAL=true
```
### 4. Iniciar frontend en modo desarrollo
```bash
npm run dev
```
**Output esperado:**
```
VITE v7.1.10 ready in 1543 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
➜ press h + enter to show help
```
### 5. Abrir aplicación en navegador
```bash
# Abrir navegador automáticamente
open http://localhost:5173 # macOS
xdg-open http://localhost:5173 # Linux
start http://localhost:5173 # Windows
```
O simplemente abre tu navegador y ve a: **http://localhost:5173**
**🎉 ¡Frontend configurado correctamente!**
---
## ✅ Verificar Instalación
### 1. Verificar Backend (Terminal 1)
```bash
# Debe estar corriendo en http://localhost:3000
# Probar endpoints
curl http://localhost:3000/api/health
curl http://localhost:3000/api/health/db
curl http://localhost:3000/api/v1/auth/login -X POST \
-H "Content-Type: application/json" \
-d '{"email":"test@gamilit.com","password":"test123"}'
```
### 2. Verificar Frontend (Terminal 2)
```bash
# Debe estar corriendo en http://localhost:5173
# Verificar build (opcional)
npm run build
# No debería haber errores de TypeScript
```
### 3. Verificar Base de Datos (Terminal 3)
```bash
# Conectar a PostgreSQL
psql -U gamilit_user -d gamilit_platform -h localhost
# Listar schemas
\dn
# Debería mostrar:
# - auth_management
# - educational_content
# - gamification_system
# - progress_tracking
# - social_features
# - content_management
# - audit_logging
# - system_configuration
# - public
# Listar tablas del schema auth_management
\dt auth_management.*
# Contar usuarios
SELECT COUNT(*) FROM auth_management.users;
# Salir
\q
```
### 4. Test End-to-End Manual
1. **Abrir frontend:** http://localhost:5173
2. **Intentar login** con usuario de prueba (si existe en seeds)
3. **Ver dashboard** de estudiante
4. **Navegar a módulos educativos**
5. **Verificar que se cargan ejercicios**
Si todo lo anterior funciona: **¡Felicitaciones! Tu entorno está 100% configurado.**
---
## 🚀 Siguientes Pasos
Ahora que tu entorno está configurado, te recomendamos:
### 1. Familiarizarte con el Codebase (Día 1)
**Leer documentación clave:**
- [VISION.md](./VISION.md) - Visión del producto
- [apps/backend/_MAP.md](../../apps/backend/_MAP.md) - Estructura del backend
- [apps/frontend/_MAP.md](../../apps/frontend/_MAP.md) - Estructura del frontend
- [apps/database/_MAP.md](../../apps/database/_MAP.md) - Esquema de base de datos
**Explorar código:**
```bash
# Backend
cd apps/backend/src
tree -L 2 # Ver estructura de módulos
# Frontend
cd apps/frontend/src
tree -L 2 # Ver estructura de features
```
### 2. Ejecutar Tests (Día 1)
```bash
# Backend tests
cd apps/backend
npm test
# Frontend tests
cd apps/frontend
npm test
# Ver coverage
npm run test:cov # backend
npm run test:coverage # frontend
```
### 3. Configurar Herramientas de Desarrollo (Día 1-2)
**ESLint y Prettier:**
```bash
# Backend
cd apps/backend
npm run lint # Ver errores de linting
npm run format # Formatear código
# Frontend
cd apps/frontend
npm run lint
npm run format
```
**VS Code settings (opcional):**
Crear `.vscode/settings.json` en la raíz:
```json
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"typescript.tsdk": "node_modules/typescript/lib"
}
```
### 4. Leer Estándares de Código (Día 2)
- [docs/standards/CODING-STANDARDS.md](../standards/CODING-STANDARDS.md) - Estándares de código
- [docs/standards/GIT-WORKFLOW.md](../standards/GIT-WORKFLOW.md) - Workflow de Git
- [docs/standards/CODE-REVIEW-GUIDE.md](../standards/CODE-REVIEW-GUIDE.md) - Guía de code review
### 5. Tomar Primera Tarea (Día 2-3)
**Tasks recomendadas para empezar:**
- Corregir un bug P2 (bajo riesgo)
- Escribir tests faltantes
- Mejorar documentación
- Refactorizar código existente
**Buscar issues en GitHub:**
```bash
# Labels recomendados para comenzar
- good-first-issue
- documentation
- tests
- refactoring
```
### 6. Unirte a Canales de Comunicación (Día 1)
- **Slack:** #gamilit-backend, #gamilit-frontend, #gamilit-general
- **GitHub:** Watch repository para notificaciones
- **Reuniones:** Daily standup (9:00 AM), Sprint planning (Lunes)
---
## 🔧 Troubleshooting
### Problemas Comunes
#### 1. Backend no inicia - Error de conexión a DB
**Síntoma:**
```
Error: connect ECONNREFUSED 127.0.0.1:5432
```
**Solución:**
```bash
# Verificar que PostgreSQL esté corriendo
# macOS
brew services list | grep postgresql
# Ubuntu
sudo systemctl status postgresql
# Si no está corriendo, iniciarlo
brew services start postgresql@15 # macOS
sudo systemctl start postgresql # Ubuntu
```
#### 2. Frontend no conecta con Backend - CORS Error
**Síntoma:**
```
Access to fetch at 'http://localhost:3000' from origin 'http://localhost:5173'
has been blocked by CORS policy
```
**Solución:**
```bash
# Verificar .env del backend
cat apps/backend/.env | grep CORS_ORIGIN
# Debe ser:
CORS_ORIGIN=http://localhost:5173
# Reiniciar backend después de cambiar
```
#### 3. npm install falla - Permission Error
**Síntoma:**
```
EACCES: permission denied
```
**Solución:**
```bash
# NO uses sudo con npm install
# Arreglar permisos de npm
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
# Agregar a PATH en ~/.bashrc o ~/.zshrc
export PATH=~/.npm-global/bin:$PATH
# Recargar shell
source ~/.bashrc # o source ~/.zshrc
```
#### 4. TypeScript errors - Module not found
**Síntoma:**
```
Cannot find module '@/shared/constants'
```
**Solución:**
```bash
# Verificar que tsconfig.json tenga paths configurados
cat tsconfig.json | grep -A 5 "paths"
# Reinstalar dependencias
rm -rf node_modules package-lock.json
npm install
```
#### 5. Base de datos - Tablas no existen
**Síntoma:**
```
ERROR: relation "auth_management.users" does not exist
```
**Solución:**
```bash
# Ejecutar DDL completo
cd apps/database
./scripts/reset-database.sh # si existe
# O manualmente
psql -U gamilit_user -d gamilit_platform -h localhost -f ddl/base-schema.sql
```
### Obtener Ayuda
Si ninguna solución funciona:
1. **Revisar logs detallados:**
```bash
# Backend
tail -f apps/backend/logs/error.log
# Frontend (console del navegador)
F12 → Console tab
```
2. **Buscar en documentación:**
- [docs/03-desarrollo/](../03-desarrollo/)
- [GitHub Issues](https://github.com/YOUR_ORG/gamilit/issues)
3. **Preguntar al equipo:**
- Slack: #gamilit-help
- Tag a Tech Lead: @tech-lead
- Email: tech@gamilit.com
---
## 📚 Recursos Útiles
### Documentación del Proyecto
| Documento | Propósito | Link |
|-----------|-----------|------|
| **VISION.md** | Visión del producto | [Ver](./VISION.md) |
| **Arquitectura Backend** | Estructura y módulos | [Ver](../03-desarrollo/backend/ESTRUCTURA-Y-MODULOS.md) |
| **Arquitectura Frontend** | Componentes y features | [Ver](../03-desarrollo/frontend/ESTRUCTURA-Y-FEATURES.md) |
| **Esquema DB** | Base de datos completa | [Ver](../03-desarrollo/base-de-datos/ESQUEMA-COMPLETO.md) |
| **API Reference** | Documentación de API | [Ver](../02-especificaciones-tecnicas/apis/API-REFERENCE.md) |
### Tecnologías Principales
**Backend:**
- [NestJS Documentation](https://docs.nestjs.com/)
- [TypeORM Documentation](https://typeorm.io/)
- [Express.js Guide](https://expressjs.com/en/guide/routing.html)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
**Frontend:**
- [React Documentation](https://react.dev/)
- [Vite Guide](https://vitejs.dev/guide/)
- [TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/intro.html)
- [Tailwind CSS Documentation](https://tailwindcss.com/docs)
- [Zustand Guide](https://docs.pmnd.rs/zustand/getting-started/introduction)
### Herramientas de Desarrollo
- [VS Code Tips & Tricks](https://code.visualstudio.com/docs/getstarted/tips-and-tricks)
- [Git Cheatsheet](https://education.github.com/git-cheat-sheet-education.pdf)
- [PostgreSQL Cheatsheet](https://www.postgresqltutorial.com/postgresql-cheat-sheet/)
### Videos y Tutoriales
- [NestJS Crash Course](https://www.youtube.com/watch?v=GHTA143_b-s)
- [React 19 Features](https://react.dev/blog/2024/04/25/react-19)
- [PostgreSQL Tutorial](https://www.postgresqltutorial.com/)
---
## 🎓 Checklist de Onboarding
Usa esta checklist para asegurarte de que completaste todo:
### Día 1
- [ ] Instalados todos los prerrequisitos (Node, PostgreSQL, Git)
- [ ] Clonado el repositorio
- [ ] Leído VISION.md y README.md
- [ ] Base de datos creada y schemas ejecutados
- [ ] Backend corriendo en http://localhost:3000
- [ ] Frontend corriendo en http://localhost:5173
- [ ] Verificados health checks del backend
- [ ] Login manual funcional en frontend
### Día 2
- [ ] Explorada estructura del backend (apps/backend/src/)
- [ ] Explorada estructura del frontend (apps/frontend/src/)
- [ ] Leídos _MAP.md de apps/backend, apps/frontend, apps/database
- [ ] Ejecutados tests del backend (npm test)
- [ ] Ejecutados tests del frontend (npm test)
- [ ] Configurado ESLint y Prettier en editor
- [ ] Leídos CODING-STANDARDS.md y GIT-WORKFLOW.md
### Día 3
- [ ] Unido a canales de Slack (#gamilit-*)
- [ ] Asistido a daily standup
- [ ] Tomada primera tarea (good-first-issue)
- [ ] Creada primera branch de feature
- [ ] Hecho primer commit siguiendo estándares
- [ ] Abierto primer PR (aunque sea draft)
---
**¡Bienvenido al equipo! 🚀**
Si tienes preguntas, no dudes en preguntar en #gamilit-help o contactar a @tech-lead.
---
**Documento preparado por:** Tech Lead
**Última actualización:** 2025-11-07
**Versión:** 1.0