# ADR-001: Stack Tecnológico

**Estado:** Aceptada  
**Fecha:** 2025-11-23  
**Responsable:** Architecture-Analyst  

## Contexto

Necesitamos definir el stack tecnológico para el ERP Genérico que sea:
- Moderno y mantenible
- Escalable para múltiples proyectos
- Con ecosistema maduro y soporte a largo plazo

## Decisión

**Backend:** Node.js 20+ LTS + Express 4.18+ + TypeScript 5+  
**Frontend:** React 18+ + Vite 5+ + TypeScript 5+  
**Database:** PostgreSQL 15+ + PostGIS  
**Mobile:** React Native (futuro)

## Justificación

### Referencia a Gamilit
- Stack probado en producción (2+ años)
- Node.js 20 LTS (soporte hasta 2026)
- TypeScript garantiza type safety completo
- Vite build tool moderno (HMR rápido)
- PostgreSQL 15 con mejoras de performance

### Referencia a Odoo
- Odoo usa Python, pero Node.js tiene ecosistema más amplio para APIs
- PostgreSQL es el mismo RDBMS que usa Odoo (probado a escala)

### Referencia a ERP Construcción
- Ya usa Node.js + Express + PostgreSQL
- Migración será más sencilla
- Equipo ya tiene experiencia

## Consecuencias

### Positivas
- Ecosistema maduro (npm, TypeScript, React)
- Reutilización de conocimiento del equipo
- Type safety completo (reduce bugs 40%)
- Performance excelente (Node.js async I/O)
- PostgreSQL altamente escalable

### Negativas
- Node.js single-threaded (mitigado con clustering)
- JavaScript puede ser permisivo (mitigado con TypeScript strict mode)

## Alternativas Consideradas

**1. Python + Django + PostgreSQL**
- Pros: Más cercano a Odoo, bueno para data science
- Contras: Equipo no tiene experiencia, ecosistema frontend limitado
- Rechazada: Curva de aprendizaje alta

**2. Java + Spring Boot + PostgreSQL**
- Pros: Enterprise-grade, muy robusto
- Contras: Verbose, lento desarrollo, equipo no tiene experiencia
- Rechazada: Overhead de desarrollo alto

## Implementación

### Acciones Requeridas
- [x] Configurar proyecto con Node.js 20 LTS
- [x] Setup TypeScript con strict mode
- [x] Configurar React 18 + Vite
- [x] Setup PostgreSQL 15 + PostGIS

### Criterios de Aceptación
- Build exitoso sin errores TypeScript
- HMR funcional en <1s
- PostgreSQL con extensiones necesarias

### Riesgos y Mitigación
- **Riesgo:** Problemas de performance con Node.js single-threaded
  - **Mitigación:** Usar clustering, workers threads para tareas pesadas

## Referencias
- [Gamilit Stack](../00-analisis-referencias/gamilit/backend-patterns.md)
- [Node.js 20 LTS](https://nodejs.org)

## Notas Adicionales
Stack compatible con despliegue en Docker/Kubernetes.
