Ir al contenido
Ir a Lynx

Introducción a Lynx

¡Bienvenido a la documentación de Lynx! Esta página te ofrece un panorama general sobre qué es Lynx, cómo está estructurado y cuáles son los beneficios de su arquitectura.

Lynx es un monorepo moderno y altamente escalable, diseñado para acelerar el desarrollo de aplicaciones web, servicios backend y herramientas con IA. Al adoptar un enfoque de monorepo, Lynx asegura la coherencia en todo el ecosistema, facilitando el desarrollo y la evolución de productos complejos mediante el intercambio eficiente de código, herramientas de desarrollo, tipos estrictos y suite de testing preconfigurada.

  1. Tipado estricto extremo a extremo
  2. Contexto para inteligencia artificial
  3. Experiencia de desarrollador de primera clase
  4. Testing de alto nivel

El monorepo está construido sobre herramientas de vanguardia como turborepo (para la gestión eficiente de tareas de monorepo) y pnpm (para gestionar las dependencias de manera segura y eficiente).

La estructura de Lynx se divide principalmente en dos grandes bloques: Aplicaciones (apps/) y Paquetes (packages/).

Aquí viven las aplicaciones destinadas a usuarios. Lynx incluye diversas aplicaciones optimizadas para diferentes casos de uso:

  • Next.js (apps/next): El portal frontend principal o aplicación web dinámica. Está desarrollado utilizando el App Router de Next.js (React 19), asegurando SSR, rendimiento óptimo y un diseño estructurado.
  • NestJS (apps/nest): El backend principal del ecosistema. Construida sobre NestJS, se encarga de manejar la lógica de negocio robusta, la autenticación, las conexiones a las bases de datos de forma segura, y todas las integraciones con servicios externos.
  • Astro (apps/astro): El portal de documentación técnica estática y rápida (este mismo sitio). Utiliza Astro y Starlight para proveer guías y documentación a todo el equipo.

Los paquetes encapsulan lógica, componentes y configuraciones que son consumidos por una o más aplicaciones, promoviendo el enfoque DRY (Don’t Repeat Yourself). Algunos de los más importantes son:

  • @lynx/core: El núcleo de configuraciones y utilidades puras del ecosistema. Garantiza la consistencia en validaciones utilizando esquemas Zod.
  • @lynx/ui: Un sistema de diseño completo y centralizado. Exporta componentes React consistentes y estilizados mediante Bulma (y CSS Modules). Se apoya de Storybook para el desarrollo de componentes reutilizables.
  • @lynx/models: Gestiona los modelos de la base de datos (PostgreSQL), esquemas y migraciones utilizando Drizzle ORM. Centraliza la definición de los datos para que el backend y el frontend compartan los mismos tipos TypeScript y schemas de Zod.
  • @lynx/auth: SDK para todo el flujo de autenticación, sesiones y control de acceso implementado con Better Auth.
  • @lynx/mail: SDK de envío de correos y renderizado de plantillas de emails transaccionales construidos con React Email.
  • @lynx/cli: CLI para inicializar entornos y manejar secretos.
  1. Tipado Estricto (Type Safety): Al compartir los mismos modelos (@lynx/models) y utilidades (@lynx/core), cualquier cambio en la base de datos o en la API backend es reflejado inmediatamente como un error de compilación TypeScript en el frontend si hay incompatibilidades, garantizando una integración perfecta.
  2. Única Fuente de Verdad: Las configuraciones de TypeScript, ESLint (Oxlint), Vitest y Prettier (Oxfmt) son unificadas, garantizando los mismos estándares de calidad de código en cada rincón del proyecto.
  3. Reutilización Masiva de Código: En lugar de reescribir un componente de interfaz, este simplemente se importa de @lynx/ui. En lugar de reimplementar la validación de un formulario, se extrae el esquema Zod de @lynx/models.
  4. Desarrollo Ágil y Testing: Toda la infraestructura cuenta con Vitest y Playwright configurados. Turborepo permite ejecutar todas las pruebas y procesos de “build” del proyecto de manera paralela y cacheada, evitando tiempos de espera innecesarios.

Lynx no es solo una colección de aplicaciones, es una arquitectura pensada para escalar sistemas a nivel empresarial manteniendo la agilidad de desarrollo.