platform-marketing-content/docs/97-adr/ADR-001-stack-tecnologico.md
rckrdmrd 74b5ed7f38 feat: Complete documentation update and orchestration configuration
- Update vision, architecture and technical documentation
- Update module definitions (PMC-001 to PMC-008)
- Update requirements documentation
- Add CONTEXT-MAP.yml and ENVIRONMENT-INVENTORY.yml
- Add orchestration guidelines and references

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:38:31 -06:00

138 lines
3.3 KiB
Markdown

---
id: "ADR-001"
title: "Seleccion de Stack Tecnologico"
type: "ADR"
status: "Accepted"
date: "2025-12-08"
deciders: ["Architecture Team"]
tags: ["backend", "frontend", "database", "stack"]
project: "platform_marketing_content"
created_date: "2025-12-08"
updated_date: "2026-01-04"
---
# ADR-001: Selección de Stack Tecnológico
**Fecha:** 2025-12-08
**Estado:** Aceptado
---
## Contexto
Se requiere definir el stack tecnológico para construir la plataforma SaaS de generación de contenido y CRM creativo. El stack debe:
1. Soportar desarrollo rápido de MVP
2. Escalar para múltiples tenants
3. Integrarse con motores de IA (imagen y texto)
4. Ser mantenible por un equipo pequeño
5. Tener ecosistema maduro y documentación
---
## Decisión
### Backend: NestJS + TypeScript
**Framework:** NestJS v10+
**Lenguaje:** TypeScript
**ORM:** TypeORM
**Razones:**
- Arquitectura modular similar a Angular
- Soporte nativo para TypeScript
- Decoradores para validación, documentación, guards
- Ecosistema rico: Bull queues, WebSockets, GraphQL
- Fácil testing con DI
- Swagger auto-generado
### Frontend: React + Vite + TailwindCSS
**Framework:** React 18
**Bundler:** Vite
**Styling:** TailwindCSS + Shadcn/UI
**Estado:** Zustand o TanStack Query
**Razones:**
- React es el estándar de la industria
- Vite ofrece desarrollo rápido (HMR instantáneo)
- TailwindCSS permite UI consistente sin escribir CSS custom
- Shadcn/UI provee componentes accesibles y personalizables
- Zustand es simple para estado global mínimo
### Base de Datos: PostgreSQL
**Motor:** PostgreSQL 15+
**Features usados:** RLS, JSONB, Full-text search
**Razones:**
- Row-Level Security nativo para multi-tenancy
- JSONB para datos semi-estructurados (briefs, config)
- Búsqueda full-text integrada
- Maduro, confiable, excelente performance
- Soporte en todos los cloud providers
### Cache y Cola: Redis + Bull
**Cache:** Redis
**Cola:** Bull/BullMQ
**Razones:**
- Redis es estándar para cache y pub/sub
- Bull usa Redis, no requiere infraestructura adicional
- Bull tiene UI de admin (Bull Board)
- Soporte para prioridades y reintentos
### Storage: S3/MinIO
**Razones:**
- API compatible con S3
- MinIO permite desarrollo local sin costos
- Escalable a cualquier cloud con S3
---
## Consecuencias
### Positivas
- Stack cohesivo con TypeScript end-to-end
- Productividad alta con frameworks maduros
- Buena documentación y comunidad
- Fácil encontrar desarrolladores
- Sin vendor lock-in significativo
### Negativas
- TypeORM tiene limitaciones vs Prisma
- Bundle size de React puede crecer
- Curva de aprendizaje para decoradores de NestJS
- PostgreSQL requiere gestión de schemas
---
## Alternativas Consideradas
### Backend
1. **Express.js** - Muy bajo nivel, requiere mucha configuración manual
2. **Fastify** - Rápido pero menos ecosistema que NestJS
3. **Go/Gin** - Performance pero equipo no tiene experiencia
### Frontend
1. **Next.js** - Overkill para SPA, SSR no necesario inicialmente
2. **Vue 3** - Válido pero React tiene mayor ecosistema
3. **Svelte** - Ecosistema más pequeño, menos componentes UI
### Base de Datos
1. **MySQL** - Sin RLS nativo, menos features
2. **MongoDB** - No relacional, complicaría queries complejos
3. **Supabase** - Dependencia de servicio externo
---
**Documento generado por:** Requirements-Analyst
**Fecha:** 2025-12-08