# ADR-002: Arquitectura Modular Monorepo **Estado:** Aceptada **Fecha:** 2025-11-23 **Responsable:** Architecture-Analyst ## Contexto Necesitamos organizar el código en una estructura escalable y mantenible que soporte: - Múltiples aplicaciones (backend, frontend, mobile) - Componentes compartidos - Desarrollo en equipo ## Decisión **Monorepo con estructura:** ``` erp-generic/ ├── apps/ │ ├── database/ # DDL, migrations │ ├── backend/ # API REST │ ├── frontend/ # Web app │ └── mobile/ # React Native (futuro) ├── packages/ # Librerías compartidas └── devops/ # Scripts, CI/CD ``` ## Justificación ### Referencia a Gamilit - Estructura probada en producción - Organización clara por aplicación - Fácil navegación y onboarding ### Referencia a Odoo - Odoo también es modular (addons) - Separación clara de responsabilidades ## Consecuencias ### Positivas - Escalabilidad (agregar nuevas apps) - Reutilización de código (packages compartidos) - Desarrollo en equipo sin conflictos - Testing aislado por app ### Negativas - Complejidad inicial de setup - Requiere herramientas monorepo (npm workspaces) ## Alternativas Consideradas **1. Repositorios separados** - Rechazada: Dificulta sincronización de cambios **2. Monolito único** - Rechazada: No escalable ## Implementación ### Acciones Requeridas - [x] Crear estructura de carpetas - [x] Configurar npm workspaces - [x] Setup path aliases ### Criterios de Aceptación - Apps pueden importar packages compartidos - Build independiente por app funcional ## Referencias - [Gamilit Backend Patterns](../00-analisis-referencias/gamilit/backend-patterns.md)