Inventario tecnológico
Actualizar cuando cambie una versión mayor de runtime, framework o servicio de infra.
Monorepo
| Herramienta |
Versión / notas |
| Node.js |
Según entorno local |
| npm |
workspaces apps/* |
| Turborepo |
Ver package-lock.json (evitar latest en producción) |
Frontends
| App |
Framework |
Runtime UI |
Otros |
| apps/main |
Next.js 15, TS, Tailwind |
React 18 |
next-intl |
| apps/travel |
Vite 5, React 18 |
Zustand, React Router, FullCalendar |
Axios |
| apps/tools |
Next.js 15 |
React 19 (revisar alineación con @types/react) |
— |
Backends
| App |
Python |
Framework |
Datos / servicios |
| apps/main |
3.11 (Dockerfile) |
FastAPI |
SMTP, health, contacto |
| apps/travel |
3.12 |
FastAPI, SQLAlchemy 2.0 |
PostgreSQL, Qdrant (RAG), OpenAI Embeddings |
| apps/ai-orchestrator |
3.12 |
FastAPI, LangGraph, LangChain |
Groq (prod) / Ollama (dev), Travel API HTTP |
| apps/tools |
3.12 |
FastAPI, LlamaIndex |
Qdrant, Groq, OpenAI embeddings, spaCy |
| apps/gastro |
3.12 |
FastAPI |
Stub |
Infraestructura (Docker típico)
| Servicio |
Imagen / notas |
| PostgreSQL |
16-alpine (travel_db, evolution_db, etc.) |
| Redis |
7-alpine |
| Qdrant |
Vector DB (RAG para tools y travel) |
| n8n |
Automatización de flujos WhatsApp → Orchestrator |
| Evolution API |
WhatsApp gateway |
| Traefik |
Proxy reverso, TLS, dashboard |
Servicios externos (APIs)
| Servicio |
Uso |
App consumidora |
| Groq API |
Inference LLM (llama-3.3-70b, etc.) |
ai-orchestrator |
| OpenAI API |
Embeddings (text-embedding-3-small) |
travel, tools |
| Ollama (local) |
Inference LLM para tests E2E |
ai-orchestrator (dev) |
Dependencias compartidas entre apps
No hay carpeta packages/ en el monorepo; cada app declara sus dependencias. Revisar duplicación de versiones en futuros refactors.
Herramientas de desarrollo
| Ámbito |
Herramienta |
| JS/TS lint |
ESLint (por app) |
| Python (main backend) |
Ruff, Black, MyPy (pyproject) |
| Tests JS |
Jest (main frontend) |
| Tests Python |
pytest (main, tools, ai-orchestrator) |
| Evals IA |
200 tests E2E con Juez Dinámico (ai-orchestrator) |