# AvanzaCast - Arquitectura Modular ## Visión General AvanzaCast se divide en 4 módulos principales que funcionan de forma independiente pero comunicada: ``` AvanzaCast/ ├── packages/ │ ├── landing-page/ # Módulo público (Next.js/Vite) │ ├── backend-api/ # API central (Node.js + Express) │ ├── broadcast-studio/ # Studio de streaming (React + WebRTC) │ └── admin-panel/ # Panel SaaS (React + Admin UI) ├── shared/ │ ├── types/ # TypeScript types compartidos │ ├── utils/ # Utilidades compartidas │ └── config/ # Configuración compartida └── docs/ ├── api/ # Documentación de APIs └── deployment/ # Guías de despliegue ``` ## Módulos ### 1. Landing Page (Public) **Tecnología**: Next.js 15 / Vite + React **Puerto**: 3000 **Responsabilidades**: - Marketing y presentación del producto - Registro de nuevos usuarios - Login y autenticación inicial - Pricing y planes - Blog/recursos - SEO optimizado **Conexiones**: - → `backend-api` para registro/login - → Redirección a `broadcast-studio` post-login - → Redirección a `admin-panel` para admins --- ### 2. Backend API (Core) **Tecnología**: Node.js + Express + TypeScript **Puerto**: 4000 **Base de datos**: PostgreSQL + Redis **Responsabilidades**: - Autenticación (JWT) y autorización - Gestión de usuarios y perfiles - Planes de pago (Stripe/PayPal) - Integraciones externas: - YouTube API - Facebook Graph API - Twitch API - LinkedIn API - WebSocket para streaming en vivo - Storage (S3/MinIO) para grabaciones - Transcoding (FFmpeg) de videos - Analytics y métricas **Endpoints principales**: ``` /api/v1/auth/* # Autenticación /api/v1/users/* # Gestión de usuarios /api/v1/subscriptions/* # Planes y pagos /api/v1/streaming/* # Sesiones de streaming /api/v1/integrations/* # Conexiones a plataformas /api/v1/media/* # Grabaciones y assets ``` **Conexiones**: - ← Recibe requests de todos los frontends - → PostgreSQL para persistencia - → Redis para cache y sesiones - → S3/MinIO para almacenamiento - → APIs externas (YouTube, Facebook, etc) --- ### 3. Broadcast Studio (App Principal) **Tecnología**: React + TypeScript + WebRTC **Puerto**: 3001 **Responsabilidades**: - Estudio virtual de streaming - WebRTC para captura de video/audio - Gestión de escenas y overlays - Multistream simultáneo - Chat en tiempo real - Invitados y colaboración - Controles de streaming (start/stop/pause) - Preview en tiempo real **Características clave**: - Editor de escenas drag & drop - Biblioteca de overlays y branding - Monitor de calidad de stream - Grabación local y en la nube - Gestión de invitados (green room) **Conexiones**: - → `backend-api` para autenticación - → `backend-api` WebSocket para streaming - → APIs de plataformas vía `backend-api` --- ### 4. Admin Panel (SaaS Dashboard) **Tecnología**: React + TypeScript + Admin UI (Ant Design/Material-UI) **Puerto**: 3002 **Responsabilidades**: - Dashboard de métricas globales - Gestión de usuarios: - CRUD de usuarios - Asignación de roles - Suspensión/activación de cuentas - Gestión de planes de pago: - Crear/editar planes - Ver suscripciones activas - Historial de pagos - Facturación - Configuración de plataforma: - Límites de streaming - Integraciones habilitadas - Configuración de storage - Analytics y reportes: - Usuarios activos - Minutos de streaming - Revenue por plan - Uso de recursos - Soporte: - Tickets de usuarios - Logs de errores - Auditoría de sistema **Roles**: - Super Admin: Acceso total - Admin: Gestión de usuarios y contenido - Support: Solo lectura y soporte **Conexiones**: - → `backend-api` con permisos de admin - ← Solo accesible para usuarios con rol admin --- ## Comunicación entre Módulos ### Autenticación Compartida (JWT) ```typescript // Token JWT compartido entre módulos interface JWTPayload { userId: string; email: string; role: 'user' | 'admin' | 'super_admin'; subscription: { plan: 'free' | 'starter' | 'pro' | 'enterprise'; status: 'active' | 'cancelled' | 'expired'; }; exp: number; } ``` ### Flow de Autenticación ``` 1. Usuario → Landing Page (login) 2. Landing → Backend API (/api/v1/auth/login) 3. Backend → Responde con JWT 4. Landing → Guarda JWT en localStorage 5. Landing → Redirige a Broadcast Studio con token 6. Broadcast Studio → Valida JWT con Backend 7. Broadcast Studio → Inicia sesión del usuario ``` ### Variables de Entorno por Módulo **landing-page/.env**: ```bash VITE_API_URL=http://localhost:4000 VITE_STUDIO_URL=http://localhost:3001 VITE_ADMIN_URL=http://localhost:3002 ``` **backend-api/.env**: ```bash PORT=4000 DATABASE_URL=postgresql://user:pass@localhost:5432/avanzacast REDIS_URL=redis://localhost:6379 JWT_SECRET=your-secret-key STRIPE_SECRET_KEY=sk_test_... AWS_S3_BUCKET=avanzacast-recordings # Platform APIs YOUTUBE_CLIENT_ID=... YOUTUBE_CLIENT_SECRET=... FACEBOOK_APP_ID=... FACEBOOK_APP_SECRET=... TWITCH_CLIENT_ID=... TWITCH_CLIENT_SECRET=... ``` **broadcast-studio/.env**: ```bash VITE_API_URL=http://localhost:4000 VITE_WS_URL=ws://localhost:4000 ``` **admin-panel/.env**: ```bash VITE_API_URL=http://localhost:4000 ``` --- ## Stack Tecnológico Detallado ### Frontend (Todos los módulos) - **Framework**: React 18 + TypeScript - **Build Tool**: Vite 4 - **Routing**: React Router v6 - **State Management**: Zustand / Redux Toolkit - **UI Components**: - Landing: Tailwind CSS + HeadlessUI - Studio: Tailwind CSS + Custom Components - Admin: Ant Design / Material-UI - **HTTP Client**: Axios - **WebSocket**: Socket.io-client - **Forms**: React Hook Form + Zod ### Backend - **Runtime**: Node.js 20 LTS - **Framework**: Express.js - **Language**: TypeScript - **ORM**: Prisma / TypeORM - **Validation**: Zod - **Authentication**: Passport.js + JWT - **WebSocket**: Socket.io - **File Upload**: Multer - **Video Processing**: FFmpeg ### Base de datos - **Primary**: PostgreSQL 15 - **Cache**: Redis 7 - **Storage**: AWS S3 / MinIO ### DevOps - **Containerización**: Docker + Docker Compose - **Monorepo**: Turborepo / Nx - **CI/CD**: GitHub Actions - **Hosting**: - Frontend: Vercel / Netlify - Backend: Railway / Render / AWS EC2 - DB: Railway / AWS RDS --- ## Próximos Pasos de Implementación 1. ✅ Crear estructura de carpetas 2. ⏳ Configurar monorepo (Turborepo) 3. ⏳ Migrar landing actual a `packages/landing-page` 4. ⏳ Crear backend-api base con Express + TypeScript 5. ⏳ Configurar base de datos (Prisma + PostgreSQL) 6. ⏳ Implementar autenticación JWT 7. ⏳ Crear broadcast-studio base 8. ⏳ Crear admin-panel base 9. ⏳ Configurar comunicación entre módulos 10. ⏳ Implementar integraciones con plataformas --- ## Estructura de Desarrollo ```bash # Instalar dependencias de todos los módulos npm install # Desarrollo (todos los módulos) npm run dev # Desarrollo individual npm run dev:landing npm run dev:api npm run dev:studio npm run dev:admin # Build de producción npm run build # Tests npm run test ``` --- **Fecha**: 3 de noviembre de 2025 **Versión**: 1.0.0 **Estado**: En diseño