Infraestructura base (control plane) construida con NestJS (v11) enfocada en calidad, observabilidad temprana y despliegue contenedorizado.
Endpoint único de demo: GET /api/hello → "Hello World!".
Infra lista: Config + Validación env (Zod), Logger Pino, Filtro de excepciones global, Redis opcional, Prisma (esquema inicial), Docker multi-stage, CI básico, Husky + lint-staged + commitlint, pruebas con cobertura focalizada.
Ver .env.example. Validación estricta en arranque: si falta algo crítico el proceso termina (fail-fast).
Claves destacadas:
DATABASE_URLdebe iniciar conmysql://REDIS_ENABLED=truepara activar conexiones Redis (sino se ignoraREDIS_HOST)LOG_LEVEL(pino) por defectoinfoMETRICS_ENABLEDreservado para futura exposición/metrics
Se limita cobertura a archivos demostrativos (app.controller, app.service) para mantener verde mientras el resto es infraestructura. Ajustar collectCoverageFrom en jest.config.ts cuando se añada lógica.
Comandos:
pnpm test # unit
pnpm test:cov # cobertura
pnpm dev # desarrollo watch
pnpm build # compilar a dist
pnpm start # ejecutar compilado
pnpm lint # eslint
pnpm lint:fix # eslint --fix
pnpm format # prettier
pnpm prisma:generate | migrate | deploy
Multi-stage optimizado (Node 20-alpine + pnpm). Ejemplo build local:
docker build -t setai-api:local .
docker run --rm -p 3000:3000 --env-file .env setai-api:local
Servicio desacoplado y opcional. Activar sólo si:
REDIS_ENABLED=true
REDIS_HOST=localhost
Usa suscripción lazy; si no está habilitado no intenta conectar.
- Auth JWT + roles / scopes
- Swagger / OpenAPI automatizado
- Redis pub/sub completo (event routing)
- Métricas Prometheus (
/metricsgated by flag) - Tracing OpenTelemetry
- Persistencia de comandos / casos de uso
- Request ID + correlación logs
- Endurecimiento seguridad (headers, CSP, rate fine tuning)
- Dependabot / Renovate
Ver CONTRIBUTING.md. Commits: Conventional Commits. Hooks gestionan formato/lint automático.
MIT