72 lines
1.7 KiB
Markdown
72 lines
1.7 KiB
Markdown
# 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)
|