Arquitectura Lógica
El diseño del servidor está guiado por los patrones MVC modernos dictados por el sistema de Inyección de Dependencias (DI) de NestJS, favoreciendo el aislamiento y la fácil capacidad de prueba mediante módulos autónomos.
Flujo de Solicitudes
Sección titulada «Flujo de Solicitudes»graph TD
A[Solicitud HTTP] --> B(Middlewares / Guards)
B --> C(Controladores / Resolvers)
C --> D(Servicios)
D --> E(@lynx/models)
D --> F(@lynx/auth)
E --> G[(PostgreSQL DB)]
style A fill:#000000,stroke:#333,stroke-width:2px,color:#fff
Estructura de Módulos
Sección titulada «Estructura de Módulos»La distribución interna refleja los estándares convencionales del framework para facilitar la incorporación de nuevos desarrolladores:
src/: Raíz principal del código fuente.modules/: Dominios y lógicas aisladas (ej.users,products,billing). Cada carpeta en este nivel incluye su propio controlador, servicio, y módulo contenedor de NestJS.config/: Control de variables de entorno y loaders de configuración estricta.main.ts: Archivo de entrada donde se llama aNestFactory.createpara la instanciación de la aplicación.
test/: Configuración de pruebas end-to-end (E2E) con clientes de simulación (Supertest, etc.).
Creación de Nuevos Endpoints
Sección titulada «Creación de Nuevos Endpoints»Implementar un nuevo endpoint o flujo de negocio sigue un patrón predecible y estricto:
- Generación del Módulo: Idealmente utilizando el Nest CLI mediante la herramienta Turbo (ej.
pnpm --filter=@lynx/nest generate module <nombre>). - Controlador y Servicio: Crear un Controlador para interactuar con la solicitud HTTP y delegar la carga transaccional a un Servicio.
- Contratos (DTOs): En lugar de usar interfaces puras, define Data Transfer Objects implementando
zodynestjs-zodpara validación segura en el extremo. - Pruebas (Testing): Crea un archivo
.spec.tsjunto al servicio, instanciando un entorno mockeado.