Skip to content
Go to Lynx

Arquitectura Lógica

This content is not available in your language yet.

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.