Ir al contenido
Ir a Lynx

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.

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

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 a NestFactory.create para la instanciación de la aplicación.
  • test/: Configuración de pruebas end-to-end (E2E) con clientes de simulación (Supertest, etc.).

Implementar un nuevo endpoint o flujo de negocio sigue un patrón predecible y estricto:

  1. Generación del Módulo: Idealmente utilizando el Nest CLI mediante la herramienta Turbo (ej. pnpm --filter=@lynx/nest generate module <nombre>).
  2. Controlador y Servicio: Crear un Controlador para interactuar con la solicitud HTTP y delegar la carga transaccional a un Servicio.
  3. Contratos (DTOs): En lugar de usar interfaces puras, define Data Transfer Objects implementando zod y nestjs-zod para validación segura en el extremo.
  4. Pruebas (Testing): Crea un archivo .spec.ts junto al servicio, instanciando un entorno mockeado.