Ir al contenido
Ir a Lynx

Arquitectura Lógica

Lynx se fundamenta en un modelo de monorepo unidireccional gestionado por pnpm Workspaces. Esta estructura permite una separación clara de responsabilidades y un flujo de dependencias predecible.

Lynx se divide en dos grandes áreas funcionales, cada una con un propósito específico dentro del ciclo de desarrollo.

Son los puntos finales de ejecución y despliegue. Cada una se encarga de una interfaz o servicio específico:

  • Next.js App: Interfaz de usuario principal y lógica de cliente.
  • NestJS API: Núcleo de servicios, procesos de backend y persistencia.
  • Astro Docs: Infraestructura de contenido estático y aprendizaje.

Módulos compartidos que proveen capacidades transversales a todas las aplicaciones.

PaqueteResponsabilidad Técnica
uiSistema de diseño basado en Bulma y CSS Modules.
modelsDefiniciones de modelos de Drizzle y schemas Zod.
coreUtilidades agnósticas y lógica de negocio compartida.
authSDK para todo el flujo de autenticación, sesiones y control de acceso implementado con Better Auth.
mailSDK de envío de correos y renderizado de plantillas de emails transaccionales construidos con React Email.
cliCLI para inicializar entornos y manejar secretos.
graph TD
    subgraph Packages
        M[models] --> UI[ui]
        Ma[mail]
        A[auth]
    end

    subgraph Apps
        NEXT[next] --> UI
        NEXT --> M
        NEST --> M
        NEST --> Ma
        NEST --> A
        ASTRO[astro] --> UI
    end

Para mantener la cohesión de la base de código, Lynx impone una serie de convenciones rigurosas:

[!IMPORTANT] Prohibición de any: Todo el código debe estar estrictamente tipado. Si una estructura es desconocida, debe definirse en el sitio adecuado.

  • Estilizado: No se utilizan frameworks de utilidades (ej. Tailwind). Se prioriza el uso de la librería de UI (@lynx/ui) para un control total del diseño.
  • Validación de Datos: Todas las entradas y salidas de datos deben ser validadas mediante esquemas de Zod antes de su procesamiento. Aplica para frontend y backend.

Además de la arquitectura lógica del monorepo, cada aplicación implementa su propia arquitectura interna:

  • Next.js: App Router con flujo de datos basado en Server Components y Client Components.
  • NestJS: Arquitectura modular con módulos, controladores, servicios y pipes. Inyección de dependencias que permite mantener arquitectura limpia.
  • Astro: Arquitectura basada en páginas y componentes de Astro y React.