7.2 KiB
7.2 KiB
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-apipara registro/login - → Redirección a
broadcast-studiopost-login - → Redirección a
admin-panelpara 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-apipara autenticación - →
backend-apiWebSocket 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-apicon permisos de admin - ← Solo accesible para usuarios con rol admin
Comunicación entre Módulos
Autenticación Compartida (JWT)
// 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:
VITE_API_URL=http://localhost:4000
VITE_STUDIO_URL=http://localhost:3001
VITE_ADMIN_URL=http://localhost:3002
backend-api/.env:
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:
VITE_API_URL=http://localhost:4000
VITE_WS_URL=ws://localhost:4000
admin-panel/.env:
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
- ✅ Crear estructura de carpetas
- ⏳ Configurar monorepo (Turborepo)
- ⏳ Migrar landing actual a
packages/landing-page - ⏳ Crear backend-api base con Express + TypeScript
- ⏳ Configurar base de datos (Prisma + PostgreSQL)
- ⏳ Implementar autenticación JWT
- ⏳ Crear broadcast-studio base
- ⏳ Crear admin-panel base
- ⏳ Configurar comunicación entre módulos
- ⏳ Implementar integraciones con plataformas
Estructura de Desarrollo
# 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