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

3.3 KiB

id title type status date deciders tags project created_date updated_date
ADR-001 Seleccion de Stack Tecnologico ADR Accepted 2025-12-08
Architecture Team
backend
frontend
database
stack
platform_marketing_content 2025-12-08 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