EsportsHub
La plataforma esports lista para vestir los colores de tu club. Web pública, portal de gestión por roles y bot de Discord integrado. Stack moderno, enfoque en rendimiento, seguridad y escalabilidad.




Una plataforma, tres capas conectadas
Web pública para fans y sponsors, portal privado para jugadores y staff, y un bot de Discord que une todo en tiempo real.
Web pública
Home con efectos visuales, secciones de equipos, jugadores, noticias y creadores. Diseño responsive y SEO con OG dinámico por equipo.
Portal por roles
Gestión completa de equipos, jugadores, calendario, noticias, creadores, usuarios y documentos. Cada rol ve solo lo que necesita.
Bot Discord integrado
Recordatorios de partidos, DMs a managers cuando falta resultado, monitorización del estado de la web en tiempo real.
Autenticación robusta
Sesiones cifradas, contraseñas bcrypt, CSRF, must-change-password en primer login, rate limiting y auditoría.
Estado en vivo
Integración con APIs de Twitch y YouTube para detectar directos de creadores en tiempo real con caché inteligente.
Firma digital
Sistema completo de envío y firma de PDFs con canvas de firma, recordatorios y trazabilidad legal.
Identidad de marca
Color por juego en cada elemento visual. Animaciones de partículas respetando preferencias de accesibilidad.
Multidioma
Soporte nativo en 5 idiomas (ES, EN, FR, IT, PT). Sincronizado con el atributo lang del HTML para accesibilidad.
Calendario competitivo
Gestión de partidos por equipo con notificaciones automáticas pre y post partido vía Discord.
6 juegos oficiales
Cada uno con su identidad de color, roles propios y ficha pública dedicada.
Arquitectura técnica
Stack moderno, decisiones razonadas. Cada capa optimizada para coste, rendimiento y mantenibilidad.
Frontend
- ▸Next.js 16 con App Router
- ▸React 19 con hooks modernos
- ▸TypeScript en modo strict
- ▸Tailwind CSS 4
- ▸Framer Motion (lazy)
- ▸i18n nativo en 5 idiomas
Backend
- ▸Server Components + API Routes
- ▸iron-session cifrada
- ▸bcryptjs para contraseñas
- ▸Zod en runtime crítico
- ▸XSS sanitization en noticias
- ▸Rate limiting + CSRF tokens
Datos
- ▸PostgreSQL 16 + Drizzle ORM
- ▸16 tablas con enums tipados
- ▸FKs con CASCADE/SET NULL
- ▸Triggers updated_at automáticos
- ▸Pool tuneado para VPS
- ▸Migraciones versionadas
Infra
- ▸VPS Ubuntu 24.04
- ▸Nginx + PM2 persistente
- ▸SSL Let's Encrypt automático
- ▸Swap 2GB activo
- ▸Build en CI (GitHub Actions)
- ▸Deploy con rollback automático
Calidad
- ▸203 tests Vitest
- ▸18 tests E2E con Playwright
- ▸47 tests Python del bot
- ▸Postgres real en tests (pglite)
- ▸ESLint con max-warnings=0
- ▸5 auditorías técnicas
Bot
- ▸Python con discord.py
- ▸2.2k líneas de código
- ▸Webhook bidireccional con web
- ▸Monitor de salud del sitio
- ▸Notificaciones programadas
- ▸Proceso PM2 separado
Roles diferenciados
Granularidad real. Un jugador no puede tocar a otros equipos. Un staff edita solo lo suyo.
Admin
Acceso completo: usuarios, auditoría, todos los equipos, configuración.
Organización
Acceso total operativo, sin acceso a logs de auditoría.
Staff
Edita jugadores, staff y calendario de los equipos asignados.
Jugador-staff
Aparece como jugador pero gestiona como staff. Doble función.
Jugador
Lectura de su equipo, edita su propio perfil.
Creador
Edita su ficha de creador de contenido.
No es solo una web
Decisiones de ingeniería que normalmente no se ven, pero que dan estabilidad y profesionalidad real.
Sistema de mantenimiento sin downtime
Modo mantenimiento activable desde el portal con polling SSE para que los visitantes lo vean al instante. Al desactivarlo, todos los clientes conectados recuperan la web sin recargar.
Drizzle ORM con type-safety completo
Schema con 16 tablas tipadas, enums Postgres reales, FKs con CASCADE y triggers updated_at automáticos. Migraciones versionadas y reproducibles en cualquier entorno.
Pipeline de auditoría continua
4 auditorías técnicas internas con IDs trazables (SEC-001, EFF-001, AU-4-002…). Cada hallazgo cierra con commit etiquetado y test anti-regresión.
OpenGraph dinámico por equipo
Cuando se comparte la URL de un equipo en redes, se genera una imagen OG personalizada con colores del juego, jugadores y staff renderizada server-side.
Force-logout y impersonación
El admin puede invalidar sesiones activas al instante e impersonar usuarios para soporte con banner visible y registro completo en audit log.
Accesibilidad WCAG AA
Contraste mínimo verificado, focus traps en modales, htmlFor automático, navegación por teclado completa, respeto a prefers-reduced-motion.
CI/CD con rollback automático
Cada push a main pasa por lint, typecheck, tests, E2E y build antes de desplegar. Si falla, el VPS vuelve automáticamente al commit anterior.
Changelog versionado y trazable
Cada cambio queda registrado con versión semántica, estado (pendiente/develop/producción), fecha de despliegue y descripción pública.
Firma digital de documentos en canvas
Editor visual de campos sobre el PDF, firma con canvas (mouse o táctil), recortado al bounding box antes de exportar, recordatorios vía Discord y cron diario.
268 tests automatizados
Cobertura desde la lógica de negocio hasta los flujos completos de usuario. Cada push a main bloquea el deploy si algún test falla.
API · Autenticación
- login.test.ts8
- logout.test.ts4
- me.test.ts2
- profile.test.ts9
API · CRUD entidades
- teams.test.ts10
- users.test.ts11
- players.test.ts9
- calendar.test.ts6
- news.test.ts4
- changelog.test.ts4
- creators.test.ts3
API · Endpoints públicos
- public.test.ts13
- audit.test.ts6
- setup.test.ts5
- csrf.test.ts2
- health.test.ts1
API · Uploads y archivos
- upload.test.ts7
- uploads-serve.test.ts7
Librerías core
- security.test.ts57
- session.test.ts18
- site.test.ts7
- logger.test.ts4
- tenant-isolation.test.ts3
Anti-regresión
- no-empty-logger-error.test.ts3
E2E · Playwright
- login.spec.ts6
- error-pages.spec.ts6
- cookie-banner.spec.ts5
- smoke.spec.ts1
Bot Discord · Python
- test_match.py17
- test_web_monitor.py13
- test_bot.py9
- test_control.py8
¿Qué hay detrás del precio?
Cifras objetivas del proyecto para entender qué costaría construirlo desde cero y qué valor entrega hoy.
Repartidas en ~25 jornadas activas entre web pública, portal de gestión y bot de Discord.
Lo que costaría rehacer el mismo producto a tarifa freelance senior (50–70 €/h, 1.500–2.200 h).
Código en producción, con tests y CI/CD, pero aún sin track record SaaS ni cartera de clientes.
Múltiplo 2–5× sobre revenue recurrente si el producto gana tracción comercial.
¿Por qué te enseñamos esto? Porque los precios del plan amateur (19 €/mes) o de la compra completa (12.500 €) sólo tienen sentido si entiendes el coste real de construir algo así. La diferencia entre lo que cuesta producir y lo que se paga por usarlo es nuestra propuesta de valor.
Planes para cada club
Desde clubs amateurs con tesorería ajustada hasta organizaciones que quieren plataforma propia. Elige el que encaje contigo.
Para empezar
Lo justo para tener a tu club en línea. Pensado para escuadras muy pequeñas que arrancan.
- 2 equiposincluido
- 15 usuarios totalesincluido
- 1 creadorincluido
- Setup y brandeo del clubincluido
- Subdominio propioincluido
- Hospedaje en nuestro VPSincluido
- Bot Discord configuradoincluido
- Soporte por emailincluido
Para clubs amateurs
Tu club competitivo con plataforma propia sin arruinar tu cartera.
- 5 equiposincluido
- 50 usuarios totalesincluido
- 4 creadoresincluido
- Setup y brandeo del clubincluido
- Subdominio propioincluido
- Hospedaje en nuestro VPSincluido
- Actualizaciones + backupsincluido
- Bot Discord + soporte emailincluido
Para organizaciones serias
Capacidad amplia, soporte prioritario y subdominio premium para clubs en crecimiento.
- 20 equiposincluido
- 200 usuarios totalesincluido
- 15 creadoresincluido
- Hospedaje dedicadoincluido
- Subdominio o dominio propioincluido
- Soporte prioritario + SLA 99.5%incluido
- Onboarding (2h) + monitorizaciónincluido
- Personalización extrapresupuestada
Quieres ser dueño
Te entregamos el código y lo despliegas en tu infra. Independencia total, sin límites.
- Equipos / usuarios / creadoresilimitados
- Código fuente completoincluido
- Web + portal + botincluido
- Despliegue en tu VPSincluido
- Documentación técnicaincluido
- Onboarding (4h) + soporte 1 mesincluido
- Garantía 90 días bugsincluido
- Transferencia dominioincluido
¿Te apetece ser sponsor del proyecto?
Aplicamos descuento sobre el plan que elijas a cambio de testimonio público y feedback continuo del producto. No es un plan aparte: cualquiera de los tres planes recurrentes de arriba sirve como base.
- ▸Setup −66%: 199€ 65€ · 299€ 99€ · 399€ 135€
- ▸3 primeros meses al 50% sobre la cuota mensual
- ▸Logo en la página de sponsors VentuLabs
- ▸Voz directa en la hoja de ruta del producto
- ▸Testimonio público (texto o vídeo) que podamos mostrar
- ▸Feedback continuo del producto durante los primeros 6 meses
- ▸Compromiso mínimo: 6 meses de uso real
Plazas limitadas por instancia activa. El descuento sponsor se aplica al confirmar el alta.
Stack completo
Solo herramientas modernas, mantenidas y con comunidad activa.
Profesional, estable, propio.
EsportsHub no usa plantillas, no depende de SaaS caros, no tiene vendor lock-in. Es una plataforma con identidad técnica que viste los colores de tu club.
Hablemos · hola@ventucorp.es