🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.1 KiB
| id | title | type | status | date | deciders | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ADR-001 | Seleccion de Stack Tecnologico | Architecture Decision Record | Accepted | 2026-01-04 |
|
|
ADR-001: Seleccion de Stack Tecnologico
Status: Accepted Date: 2026-01-04 Deciders: Tech Lead, Backend Team, Frontend Team Tags: stack, nestjs, react, postgresql
Context
El proyecto Inmobiliaria Analytics requiere un stack tecnologico que soporte:
- Alto rendimiento en analytics: Procesamiento eficiente de grandes volumenes de datos inmobiliarios
- Escalabilidad horizontal: Crecimiento de usuarios y datos sin rediseno
- Time-to-market rapido: MVP en Q1 2026
- Mantenibilidad a largo plazo: Codigo limpio y documentado
- Ecosistema maduro: Librerias y comunidad activa
Restricciones
- Equipo con experiencia en TypeScript/JavaScript
- Infraestructura existente basada en Docker
- Base de datos relacional requerida para transacciones
- Compatibilidad con sistema NEXUS existente
Decision
Seleccionamos el siguiente stack tecnologico:
Backend: NestJS 10.x + TypeORM
Razon: Framework TypeScript-first con arquitectura modular que facilita el desarrollo de APIs escalables. TypeORM proporciona un ORM robusto con soporte para migraciones.
Frontend: React 18.x + TypeScript + Vite
Razon: Ecosistema maduro con excelente soporte para aplicaciones de datos. Vite proporciona DX rapida. TypeScript asegura type-safety end-to-end.
Base de Datos: PostgreSQL 16 + Redis 7
Razon: PostgreSQL ofrece:
- Extensiones geograficas (PostGIS) para datos inmobiliarios
- JSONB para datos semi-estructurados
- Excelente rendimiento en queries analiticas
- ACID compliance
Redis para:
- Caching de queries frecuentes
- Sesiones de usuario
- Rate limiting
Autenticacion: Passport + JWT
Razon: Estrategia stateless que facilita escalabilidad horizontal. JWT permite validacion sin consulta a BD.
Alternatives Considered
Alternative 1: Python + FastAPI + SQLAlchemy
Pros:
- Excelente para ML/Analytics
- Librerias de data science maduras
- FastAPI es muy rapido
Cons:
- Equipo tiene menos experiencia
- Dos stacks de lenguaje (Python + JS/TS para frontend)
- Menor integracion con ecosistema existente
Decision: Rechazada - curva de aprendizaje y fragmentacion de stack
Alternative 2: Next.js Full-Stack
Pros:
- Un solo framework
- SSR built-in
- Vercel deployment simple
Cons:
- Menos flexible para APIs complejas
- Acoplamiento frontend-backend
- Escalabilidad de API limitada
Decision: Rechazada - requerimos separacion clara para escalabilidad independiente
Alternative 3: Go + Fiber + React
Pros:
- Alto rendimiento
- Compilacion a binarios
- Excelente para microservicios
Cons:
- Cambio significativo de paradigma
- Menos ecosistema para web apps
- Curva de aprendizaje alta
Decision: Rechazada - time-to-market afectado significativamente
Alternative 4: MongoDB en lugar de PostgreSQL
Pros:
- Flexibilidad de schema
- JSON nativo
- Facil escalabilidad horizontal
Cons:
- Sin transacciones ACID robustas (hasta recientemente)
- Datos inmobiliarios son relacionales por naturaleza
- PostGIS superior para geo-datos
Decision: Rechazada - PostgreSQL mejor para dominio inmobiliario
Consequences
Positivas
- Consistencia de lenguaje: TypeScript end-to-end
- Reutilizacion: DTOs y tipos compartidos
- Productividad: Equipo productivo desde dia 1
- Escalabilidad: Cada componente escala independientemente
- Comunidad: Amplio soporte y recursos
Negativas
- Node.js single-threaded: Puede ser limitante para CPU-intensive
- Mitigacion: Worker threads o microservicio Python para ML
- ORM overhead: TypeORM puede ser lento para queries complejas
- Mitigacion: Raw queries para analytics criticos
- Bundle size React: Apps grandes pueden ser pesadas
- Mitigacion: Code splitting, lazy loading
Neutrales
- Requiere setup inicial de TypeORM migrations
- Configuracion de Swagger para documentacion API
- Setup de testing con Jest
Implementation Notes
Dependencias Clave
{
"backend": {
"@nestjs/core": "^10.3.0",
"@nestjs/typeorm": "^10.0.1",
"typeorm": "^0.3.19",
"pg": "^8.11.3"
},
"frontend": {
"react": "^18.x",
"typescript": "^5.3.x",
"vite": "^5.x"
}
}
Configuracion Inicial
- Monorepo con apps separadas
- Docker Compose para desarrollo local
- GitHub Actions para CI/CD
- PostgreSQL con schemas por dominio
References
- NestJS Documentation
- TypeORM Documentation
- React Documentation
- PostgreSQL Documentation
- STACK-TECNOLOGICO.md
Status History
| Date | Status | Notes |
|---|---|---|
| 2026-01-04 | Proposed | ADR creado |
| 2026-01-04 | Accepted | Aprobado por equipo tecnico |
Document: ADR-001 Status: Accepted Date Created: 2026-01-04 Supersedes: N/A