Saltar al contenido principal

Monorepo y Stack

Alternun usa un monorepo de workspace con pnpm y orquestación con TurboRepo.

Esa decisión es intencional: el repositorio contiene varias apps que comparten infraestructura, patrones de autenticación, traducciones, primitivas de diseño y automatización de releases.

Estructura Del Workspace

Superficies De Aplicación

apps/mobile

Base de código principal de la aplicación AIRS.

Tecnologías clave:

  • Expo
  • Expo Router
  • React 19
  • React Native 0.81
  • React Native Web
  • cliente JavaScript de Supabase
  • WalletConnect
  • Firebase
  • NativeWind y soporte de estilos orientado a Tailwind

Por qué importa:

  • una sola base de código soporta patrones móviles nativos y entrega web
  • la familia de dominios públicos AIRS se entrega desde esta app a través de la capa de infraestructura

apps/admin

Consola administrativa interna.

Tecnologías clave:

  • Vite
  • React 18
  • React Router
  • Refine
  • oidc-client-ts

Por qué importa:

  • separa los flujos operativos de la experiencia pública de AIRS
  • puede desplegarse junto con la API dentro de los dashboard stacks

apps/api

Servicio backend personalizado.

Tecnologías clave:

  • NestJS 10
  • Fastify 4
  • Swagger / OpenAPI
  • adaptador para AWS Lambda

Por qué importa:

  • le da a la plataforma un lugar para la lógica backend personalizada que no debe vivir en el cliente
  • hoy ya incluye endpoints de salud y flujos orientados a integración como el puente OAuth de Decap

apps/docs

Sitio público de documentación.

Tecnologías clave:

  • Docusaurus 3
  • React
  • diagramas Mermaid
  • integración con Decap CMS
  • oidc-client-ts para acceso protegido de editores

Por qué importa:

  • ofrece documentación pública de producto y para desarrolladores
  • soporta un flujo de edición protegido en vez de editar contenido directamente en producción

apps/web

Aplicación Next.js.

Rol actual:

  • superficie web secundaria
  • no es el objetivo principal de despliegue público dentro del modelo actual de infraestructura

Esto es importante para quienes llegan al repo por primera vez: el camino principal de despliegue de AIRS es Expo-web-first, no Next.js-first.

Paquetes Compartidos

@alternun/auth

Paquete compartido que envuelve la autenticación.

Propósito:

  • centraliza abstracciones de autenticación del lado de las apps
  • encapsula la librería de autenticación upstream usada por el proyecto
  • agrega comportamiento de cliente orientado a móviles
  • incluye scripts de soporte para SES y correo alrededor de identity/email

@alternun/ui

Paquete compartido de componentes de UI.

Propósito:

  • mantiene piezas de interfaz reutilizables fuera de una sola app
  • soporta reutilización entre varias apps cuando comparten lenguaje de diseño

@alternun/i18n

Paquete compartido de catálogos de traducción.

Propósito:

  • punto central para datos de locale y helpers de runtime
  • lo reutilizan las apps en lugar de duplicar archivos de traducción por todos lados

packages/email-templates

Soporte para generación y sincronización de correos.

Propósito:

  • almacena contenido localizado compartido para emails
  • soporta sistemas de entrega posteriores, como la sincronización de plantillas/correos de Supabase

@alternun/infra

Paquete de despliegue y plataforma.

Propósito:

  • define recursos de AWS
  • controla el mapeo entre dominios y stages
  • se encarga de la creación de pipelines y de verificaciones de seguridad de despliegue
  • actúa como la columna operativa vertebral del monorepo

Herramientas Principales

El repositorio se coordina con un conjunto pequeño de herramientas de alto impacto:

  • pnpm para gestión de paquetes del workspace
  • TurboRepo para orquestación del grafo de builds
  • TypeScript en todo el monorepo
  • ESLint y Prettier para higiene de código
  • Husky y lint-staged para enforcement antes del commit

Modelo De Build y Tareas

En la raíz del repositorio, los comandos comunes están estandarizados:

  • pnpm build
  • pnpm dev
  • pnpm lint
  • pnpm type-check
  • pnpm test

Turbo coordina estas tareas para que las dependencias entre paquetes se construyan en el orden correcto.

Eso le da al equipo un punto medio práctico:

  • las apps pueden evolucionar de forma independiente
  • los paquetes compartidos siguen siendo reutilizables
  • los cambios transversales aún pueden verificarse desde un solo conjunto de comandos en raíz

Por Qué Esta Estructura Funciona

Este monorepo está optimizado para trabajo de plataforma, no para una sola app aislada.

Eso significa que la estructura trata menos de "frontend versus backend" y más de:

  • experiencia pública
  • operaciones internas
  • límites de identidad y confianza
  • infraestructura desplegable
  • bloques compartidos de producto

Para colaboradores públicos, ese es el modelo mental más importante que conviene tener mientras exploran el código base.