Saltar al contenido principal
Volver al catálogo
Producto · Disponible

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.

34.5k
Líneas de código
408
Commits
833
Tests verdes
6
Juegos oficiales
9
Idiomas
ventucorp.es
EsportsHub: home pública en vista MacBook mostrando hero principal, navegación y secciones de equipos
Home · MacBook
9:41
5G
EsportsHub: home pública en vista iPhone
Home · iPhone
ventucorp.es/portal
EsportsHub: portal de gestión en vista MacBook con dashboard de equipos y calendario
Portal · MacBook
9:41
5G
EsportsHub: portal de gestión en vista iPhone
Portal · iPhone
El producto

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 hero interactivo, equipos con su roster completo, calendario, noticias en Markdown 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 y monitorización del estado de la web en tiempo real. Cada DM llega en el idioma del usuario.

Autenticación robusta

Sesiones cifradas, contraseñas bcrypt, CSRF, must-change-password en primer login, rate limiting y auditoría. Enlaces de bienvenida con acceso directo que caducan a las 24 h.

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; las plazas libres del roster se tiñen con el color del equipo. Animaciones de partículas respetando preferencias de accesibilidad.

Multidioma

Web, portal y bot en 9 idiomas (ES, EN, FR, PT, IT, DE, NL, SV, TR), con 914 claves por idioma. Sincronizado con el atributo lang del HTML para accesibilidad.

Calendario competitivo

Eventos con sus partidos dentro, calendario público y avisos automáticos pre y post partido vía Discord. En los eventos de un día, la fecha del partido se rellena sola.

VentuBot con IA

Chatbot en toda la web pública que responde solo sobre el club leyendo la base de datos: equipos, calendario, resultados, noticias y creadores. Streaming, preguntas rápidas y una conversación que sobrevive a navegar y recargar.

Traducción automática

Noticias y descripciones de equipo se traducen solas a los 9 idiomas con la API de Claude al crearlas o editarlas. Si cambia el original, la traducción se rehace. Contador de idiomas en el portal.

Hero interactivo

Motor de físicas 2D propio: la pastilla #VentuCorpForever, los tags de juego, los partidos, el logo y los directos se arrastran y se lanzan entre partículas. Respeta prefers-reduced-motion.

Catálogo competitivo

6 juegos oficiales

Cada uno con su identidad de color, roles propios y ficha pública dedicada.

Valorant
Tier 1
League of Legends
Tier 1
Rocket League
Tier 2
EAFC 26
Tier 2
Rainbow Six
Tier 3
Fortnite
Tier 3
Los entresijos

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
  • Motor de físicas 2D propio en el hero
  • i18n nativo: 9 idiomas × 914 claves

Backend

  • Server Components + 68 API Routes
  • iron-session cifrada + bcryptjs
  • Zod en runtime crítico
  • Noticias en Markdown seguro (sin HTML crudo)
  • Rate limiting + CSRF tokens
  • API de Claude: traducción y VentuBot

Datos

  • PostgreSQL 16 + Drizzle ORM
  • 19 tablas y 8 enums tipados
  • Multi-tenant: tenant_id en 12 tablas
  • FKs con CASCADE, SET NULL o RESTRICT
  • Triggers updated_at + pool tuneado
  • Migraciones versionadas

Infra

  • VPS Ubuntu 24.04 + Node 22
  • Nginx + PM2 persistente
  • SSL Let's Encrypt + HSTS preload
  • Dos entornos: develop y producción
  • Build en CI (GitHub Actions)
  • Deploy atómico con rollback automático

Calidad

  • 746 tests Vitest
  • 20 tests E2E con Playwright
  • 67 tests Python del bot
  • Postgres real en tests (pglite)
  • ESLint + sonarjs con trinquete de calidad
  • Umbrales de cobertura y 9 auditorías

Bot

  • Python 3.12 con discord.py
  • 2.4k líneas de código
  • DMs en 9 idiomas
  • Webhook bidireccional con web
  • Monitor de salud del sitio
  • Se despliega junto a la web
Sistema de permisos

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.

Detalles que marcan la diferencia

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 19 tablas tipadas, 8 enums Postgres reales, FKs con CASCADE, SET NULL o RESTRICT y triggers updated_at automáticos. Migraciones versionadas y reproducibles, con copia de la base antes de cada despliegue.

Pipeline de auditoría continua

9 auditorías técnicas con IDs trazables (SEC-001, AU-7-002, AU-8…), de la calidad del código a la seguridad de producción y el diseño móvil. 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 pasa por lint, typecheck, tests, E2E y un trinquete de calidad antes de desplegar en develop o en producción. El build se prepara aparte y entra de golpe, y una página abierta en mitad del despliegue se recarga sola si le falta un trozo. Si algo falla, el VPS vuelve a la versión anterior.

Changelog versionado y trazable

Cada cambio queda registrado con versión semántica, estado (pendiente/develop/producción), fecha de despliegue y una descripción pública traducida a los 9 idiomas.

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.

Multi-cliente por dominio

Cada club se resuelve por el dominio de la petición y todas las consultas filtran por su tenant, con claves foráneas en la base y caché HTTP separada por dominio. Varios clubs en la misma instancia sin cruzar datos.

IA con freno de gasto

VentuBot reserva presupuesto antes de cada llamada y lo ajusta con el consumo real: límite de ráfagas por minuto, cupo diario por IP y tope diario global. No guarda conversaciones y la IP nunca se almacena en claro.

Calidad verificada

833 tests automatizados

Cobertura desde la lógica de negocio hasta los flujos completos de usuario. Cada push bloquea el despliegue si algún test de la web falla.

746
Tests Vitest
20
Tests E2E Playwright
67
Tests bot Python
90%
Cobertura crítica
68
Ficheros de test

API · Autenticación

tests/api/auth · 23 tests
  • login.test.ts8
  • logout.test.ts4
  • me.test.ts2
  • profile.test.ts9

API · CRUD entidades

tests/api/portal · 60 tests sobre Postgres real
  • users.test.ts13
  • teams.test.ts11
  • players.test.ts9
  • calendar.test.ts8
  • calendar-matches.test.ts7
  • changelog.test.ts5
  • news.test.ts4
  • creators.test.ts3

API · Endpoints públicos

tests/api · 43 tests
  • public.test.ts14
  • chat.test.ts6
  • audit.test.ts6
  • setup.test.ts5
  • filter.test.ts5
  • log-client.test.ts4
  • csrf.test.ts2
  • health.test.ts1

Uploads y archivos

tests/api + tests/lib · 52 tests
  • uploads.test.ts38
  • upload.test.ts7
  • uploads-serve.test.ts7

Seguridad, sesión y RGPD

tests/lib · 150 tests
  • security.test.ts59
  • session.test.ts38
  • cookie-consent.test.ts20
  • legal.test.ts19
  • site.test.ts7
  • logger.test.ts4
  • no-empty-logger-error.test.ts3

Multitenancy

tests/lib · 80 tests
  • db-tenants.test.ts26
  • tenant-resolver.test.ts23
  • tenant-ctx.test.ts15
  • tenant.test.ts13
  • tenant-isolation.test.ts3

Capa de datos

tests/lib · 92 tests sobre pglite
  • db-documentos.test.ts29
  • db-autologin.test.ts20
  • db-visibilidad.test.ts19
  • db-partidos.test.ts14
  • db-traducciones.test.ts6
  • db-ids.test.ts4

Integraciones y portal

tests/lib · 140 tests
  • liveStatus.test.ts30
  • creatorStats.test.ts21
  • calendar.test.ts19
  • portalSections.test.ts18
  • documentNotify.test.ts15
  • documents.test.ts14
  • env-badge.test.ts12
  • maintenanceHub.test.ts11

Contenido, i18n e IA

tests/lib + tests/components · 44 tests
  • i18n-paridad.test.ts11
  • NewsMarkdown.test.ts8
  • translations.test.ts8
  • translate.test.ts6
  • changelog-i18n.test.ts6
  • ventubot.test.ts5

Motor de físicas y UI

tests/lib · 62 tests
  • heroPhysics.test.ts41
  • heroParticles.test.ts9
  • avatar.test.ts5
  • chunk-reload.test.ts4
  • names.test.ts3

E2E · Playwright

tests-e2e · 20 tests sobre Chrome real
  • error-pages.spec.ts8
  • login.spec.ts6
  • cookie-banner.spec.ts5
  • smoke.spec.ts1

Bot Discord · Python

discord-bot/tests · 67 tests con pytest
  • test_web_monitor.py33
  • test_match.py17
  • test_bot.py9
  • test_control.py8
El valor real

¿Qué hay detrás del precio?

Cifras objetivas del proyecto para entender qué costaría construirlo desde cero y qué valor entrega hoy.

~210 h
Horas de trabajo

Repartidas en ~33 jornadas activas entre web pública, portal de gestión y bot de Discord, con desarrollo asistido por IA.

115–230 k€
Coste de reposición

Lo que costaría rehacer el mismo producto a tarifa freelance senior (50–70 €/h, 2.300–3.300 h).

18–35 k€
Valor de venta hoy

En producción con un club real, 833 tests, CI/CD, multi-cliente e IA integrada, pero aún sin cartera de clientes SaaS.

× ARR
Valor potencial SaaS

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 (19.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.

Inversión

Planes para cada club

Desde clubs amateurs con tesorería ajustada hasta organizaciones que quieren plataforma propia. Elige el que encaje contigo.

Plan básico

Para empezar

Lo justo para tener a tu club en línea. Pensado para escuadras muy pequeñas que arrancan.

12/mes · setup 199€
  • 2 equiposincluido
  • 15 usuarios totalesincluido
  • 1 creadorincluido
  • Setup y brandeo del clubincluido
  • Subdominio propioincluido
  • Hospedaje en nuestro VPSincluido
  • Bot Discord configuradoincluido
  • Soporte por emailincluido
199€ pago único al configurar + cuota mensual de mantenimiento. Entrada accesible para clubs que arrancan.
Plan amateur · Recomendado

Para clubs amateurs

Tu club competitivo con plataforma propia sin arruinar tu cartera.

3919/mes · setup 299€
Oferta primeros 3 meses
  • 5 equiposincluido
  • 50 usuarios totalesincluido
  • 4 creadoresincluido
  • Setup y brandeo del clubincluido
  • Subdominio propioincluido
  • Hospedaje en nuestro VPSincluido
  • Actualizaciones + backupsincluido
  • Bot Discord + soporte emailincluido
299€ pago único al configurar + cuota mensual de mantenimiento. Sin permanencia, cancela cuando quieras.
SaaS profesional

Para organizaciones serias

Capacidad amplia, soporte prioritario y subdominio premium para clubs en crecimiento.

20099/mes · setup 399€
Oferta primeros 3 meses
  • 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
399€ pago único al configurar + cuota mensual de mantenimiento. Sin permanencia, cancela cuando quieras.
Compra del producto

Quieres ser dueño

Te entregamos el código y lo despliegas en tu infra. Independencia total, sin límites.

19.500
  • 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
Pago flexible: 50% al inicio, 50% al entregar. Para clientes que ya tienen equipo técnico.
Sponsor · Plazas limitadas

¿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.

Qué obtienes
  • 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
Qué pides a cambio
  • 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.

Tecnologías

Stack completo

Solo herramientas modernas, mantenidas y con comunidad activa.

Next.js 16React 19TypeScript 5Tailwind CSS 4Node.js 22PostgreSQL 16Drizzle ORMpostgres.jspgliteiron-sessionbcryptjsZod 4react-markdownAPI de ClaudeFramer MotionPDF-libVitestPlaywrightESLint 9 + sonarjsPython 3.12 + discord.pyNginxPM2Ubuntu 24.04GitHub ActionsLet's Encrypt

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 · contacto@ventucorp.es