erp-construccion/docs/97-adr/ADR-001-stack-tecnologico.md

3.0 KiB

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

  • Configurar proyecto con Node.js 20 LTS
  • Setup TypeScript con strict mode
  • Configurar React 18 + Vite
  • 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

Notas Adicionales

Stack compatible con despliegue en Docker/Kubernetes. Compatible con integraciones INFONAVIT via API REST.