- 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>
138 lines
3.3 KiB
Markdown
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
|