Visión General del Backend
El backend es una API REST construida con NestJS 11 en apps/api. Corre en el puerto 3000 en desarrollo.
Módulos registrados
Section titled “Módulos registrados”Perfiles de usuario, roles, suspensión.
5 endpointsSeguimiento de progreso por lección/módulo/path.
6 endpointsPanel CONTENT_ADMIN y SUPER_ADMIN.
20 endpointsMulti-tenancy, seats, invitaciones.
8 endpointsDatos del dashboard personal del usuario.
3 endpointsTest diagnóstico de fluencia en IA.
4 endpointsPerfiles de creador, badges, reviews y rutas del Creator Studio.
10 endpointsSolicitudes de instructor — flujo apply → approve (SUPER_ADMIN).
5 endpointsGuías técnicas con secciones, bloques y versionado snapshot (ADR-012).
8 endpointsMateriales educativos adjuntos a lecciones/módulos.
6 endpointsCaptación de leads B2B.
2 endpointsTrazabilidad de acciones admin y negocio. Decorador @AuditLog(), interceptor global, panel en /admin/audit-logs.
5 endpointsCron jobs con tracking de ejecución, enable/disable desde admin (/admin/platform/jobs).
7 endpointsNotificaciones in-app: 101 tipos, deduplicación 24h, severidad crítica, preferencias por usuario.
9 endpointsEstructura estándar de un módulo
Section titled “Estructura estándar de un módulo”modules/{name}/ {name}.module.ts ← Imports, providers, exports, controllers {name}.controller.ts ← Endpoints HTTP, decoradores, DTOs {name}.service.ts ← Lógica de negocio, queries Prisma dto/ create-{name}.dto.ts update-{name}.dto.ts {name}.service.spec.ts ← Unit tests JestGuards de uso obligatorio
Section titled “Guards de uso obligatorio”| Guard | Cuándo usar |
|---|---|
JwtAuthGuard | Cualquier endpoint que requiera usuario autenticado |
AccessLevelGuard | Endpoints de contenido con @RequireAccessLevel() |
RolesGuard | Endpoints admin con @Roles(UserRole.SUPER_ADMIN) |
InternalGuard | Endpoints /internal/* llamados solo por ai-backend |
Configuración global
Section titled “Configuración global”app.setGlobalPrefix('api');app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));app.enableCors({ origin: process.env.FRONTEND_URL });// Swagger en /api/docs (solo en development)Patrón de operaciones asíncronas (BullMQ)
Section titled “Patrón de operaciones asíncronas (BullMQ)”Operaciones que van a cola y no bloquean la request:
| Cola | Worker | Operaciones |
|---|---|---|
certificates.queue | certificates.processor | Emisión de certificados |
email.queue | email.processor | Emails transaccionales |
ai.queue | ai.processor | Llamadas IA de baja urgencia (adaptive engine) |
reports.queue | reports.processor | Reportes corporativos |