# ADR-001: Stack Tecnologico **Estado:** Aceptada **Fecha:** 2025-11-24 **Responsable:** Architecture-Analyst **Proyecto:** ERP Construccion ## Contexto Necesitamos definir el stack tecnologico para el ERP de Construccion que sea: - Moderno y mantenible - Compatible con ERP Generico para reutilizacion - Con ecosistema maduro y soporte a largo plazo - Adecuado para la industria de construccion e INFONAVIT ## Decision **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 - para asistencias GPS) ## Justificacion ### Referencia a Gamilit - Stack probado en produccion (2+ anos) - Node.js 20 LTS (soporte hasta 2026) - TypeScript garantiza type safety completo - Vite build tool moderno (HMR rapido) - PostgreSQL 15 con mejoras de performance ### Referencia a Odoo - PostgreSQL es el mismo RDBMS que usa Odoo (probado a escala) - Patrones de contabilidad y multi-tenancy adoptados ### Alineacion con ERP Generico - Mismo stack permite reutilizacion de componentes (61%) - Equipo con experiencia en este stack - Migracion sera mas sencilla ### Especifico para Construccion - PostGIS para ubicaciones de obras y GPS - Node.js async ideal para procesamiento de estimaciones - React Native para apps de asistencia en campo ## Consecuencias ### Positivas - Ecosistema maduro (npm, TypeScript, React) - Reutilizacion de conocimiento del equipo - Type safety completo (reduce bugs 40%) - Performance excelente (Node.js async I/O) - PostgreSQL altamente escalable - PostGIS para georreferenciacion de proyectos ### Negativas - Node.js single-threaded (mitigado con clustering) - JavaScript puede ser permisivo (mitigado con TypeScript strict mode) ## Alternativas Consideradas **1. Python + Django + PostgreSQL** - Pros: Mas cercano a Odoo - Contras: Equipo no tiene experiencia, no compatible con ERP Generico - Rechazada: No permite reutilizacion **2. Java + Spring Boot + PostgreSQL** - Pros: Enterprise-grade, muy robusto - Contras: No compatible con ERP Generico, curva aprendizaje alta - Rechazada: Overhead de desarrollo alto ## Implementacion ### 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 - [ ] Configurar React Native para app movil ### Criterios de Aceptacion - Build exitoso sin errores TypeScript - HMR funcional en <1s - PostgreSQL con PostGIS funcional - Compatibilidad con ERP Generico validada ### Riesgos y Mitigacion - **Riesgo:** Problemas de performance con Node.js single-threaded - **Mitigacion:** Usar clustering, workers threads para tareas pesadas ## Referencias - [ERP Generico ADR-001](../../erp-generic/docs/adr/ADR-001-stack-tecnologico.md) - [Gamilit Stack](../../shared/reference/gamilit/backend-patterns.md) - [Node.js 20 LTS](https://nodejs.org) ## Notas Adicionales Stack compatible con despliegue en Docker/Kubernetes. Compatible con integraciones INFONAVIT via API REST.