# ADR-001: Selección de Stack Técnico ## Estado Aceptado ## Fecha 2026-05-06 ## Contexto Necesitamos seleccionar el stack tecnológico inicial para el proyecto. El equipo tiene experiencia en Python y JavaScript/TypeScript, y requiere: - Rápido bootstrap - Testing BDD nativo - Compatibilidad con el framework ARNES ## Decisión Usar **Python + Behave** para BDD y **FastAPI** para el backend. ## Justificación 1. **Behave** tiene sintaxis Gherkin nativa y integración simple con Python 2. **FastAPI** ofrece validación automática con Pydantic y tests con pytest 3. Ambos tienen ecosistema maduro y documentación extensa 4. Comunidad activa y soporte a largo plazo ## Consecuencias ### ✅ Positivas - Curva de aprendizaje baja (Python) - BDD nativo con Behave (Gherkin) - Type hints en todo el stack - FastAPI: auto-generated docs (Swagger/ReDoc) - Testing integrado con pytest ### ❌ Negativas - GIL限制了多线程性能 (puede mitigated with async) - Menos opciones de hosting que Node.js ### 🔄 Neutrales - Requiere Python 3.10+ mínimo ## Alternativas Consideradas ### Opción A: Node.js + Cucumber - **Pros**: Más opciones de hosting, JSON nativo, ecosistema npm enorme - **Contras**: TypeScript requiere más setup, testing E2E más complejo - **Razón de descarte**: Mayor complejidad inicial, menor familiaridad del equipo con TS ### Opción B: Java + Cucumber-JVM - **Pros**: Tipo estático, robusto, enterprise-grade - **Contras**: Verbose, setup pesado, curva de aprendizaje alta - **Razón de descarte**: Over-engineering para MVP ### Opción C: Go + Godog - **Pros**: Binarios estáticos, excelente performance - **Contras**: BDD tooling inmaduro, less ecosystem para testing - **Razón de descarte**: BDD ecosystem no maduro ## Notas - Re-evaluar si el proyecto escala a más de 50 servicios - Considerar microservices framework si es necesario ## Relacionado con - Feature F-001 - Stack: Python 3.11+, FastAPI, Behave, PostgreSQL