src/core reúne configuraciones globales que preparan una aplicación NestJS: CORS, Swagger/OpenAPI, validación y transformación y middleware de trazabilidad. No contiene controllers, services, queries ni lógica de negocio.
Reglas obligatorias
- Nomenclatura: todos los archivos de esta carpeta deben terminar en
.core.ts, enkebab-case:cors.core.ts,swagger.core.ts,transform.core.tsytraceflow.core.ts. - Una función por archivo: cada archivo
*.core.tsdeclara y exporta una sola función de configuración. No declares funciones auxiliares adicionales dentro de estos archivos. - Nombre obligatorio:
setup+ nombre del archivo convertido a PascalCase, sin el sufijo.core.ts. Ejemplos:cors.core.ts→setupCors;traceflow.core.ts→setupTraceFlow. - Un único parámetro: la función recibe exclusivamente
app: INestApplication. No agregues otros parámetros. - Separación de responsabilidades: cada función configura una sola característica global sobre
app. No inicies el servidor, no creesNestFactoryni registres endpoints dentro del archivo. - Integración centralizada: importa y llama a estas funciones desde
src/main.ts, después de crear la aplicación y antes deapp.listen(...). - Sin duplicar implementaciones: los ejemplos completos y los ajustes concretos viven en las páginas hijas. Este índice define las convenciones.
Plantilla de un archivo core
ejemplo.core.ts
Archivos y responsabilidades
Inicialización previa a la aplicación
Si una librería necesita inicializarse antes deNestFactory.create(AppModule) —por ejemplo, la instrumentación de TraceFlow— ejecuta ese arranque en src/main.ts o en una fase de bootstrap previa, no creando una segunda función dentro de *.core.ts. setupTraceFlow(app) solo se encarga del middleware una vez que existe la aplicación.
Seguridad y comprobaciones
- No uses
origin: '*'indiscriminadamente en producción; configura los orígenes autorizados según la política del proyecto. - Usa la captura de bodies, cookies y cabeceras sensibles de TraceFlow solo en local con datos de prueba.
- Al modificar un
*.core.ts, comprueba que conserva la única funciónsetup...y quemain.tsla invoca correctamente.

