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

19.6k
Líneas de código
288
Commits
269
Tests verdes
6
Juegos oficiales
3
Idiomas
ventucorp.es
Home en MacBook
Home · MacBook
9:41
5G
Home en iPhone
Home · iPhone
ventucorp.es/portal
Portal en MacBook
Portal · MacBook
9:41
5G
Portal en 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 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 español, inglés y francés. 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.

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
  • Framer Motion (lazy)
  • i18n nativo trilingüe

🔧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

  • 204 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.4k líneas de código
  • Webhook bidireccional con web
  • Monitor de salud del sitio
  • Notificaciones programadas
  • Proceso PM2 separado
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 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.

Calidad verificada

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

204
Tests Vitest
18
Tests E2E Playwright
47
Tests bot Python
94%
Cobertura crítica
31
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/sheets · 47 tests sobre Postgres real
  • 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

tests/api · 27 tests
  • public.test.ts13
  • audit.test.ts6
  • setup.test.ts5
  • csrf.test.ts2
  • health.test.ts1

📦API · Uploads y archivos

tests/api · 14 tests
  • upload.test.ts7
  • uploads-serve.test.ts7

🛡️Librerías core

tests/lib · 78 tests
  • security.test.ts57
  • session.test.ts10
  • site.test.ts7
  • logger.test.ts4

🚨Anti-regresión

tests/ · 3 tests
  • no-empty-logger-error.test.ts3

🎭E2E · Playwright

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

🤖Bot Discord · Python

discord-bot/tests · 47 tests con pytest
  • test_match.py17
  • test_web_monitor.py13
  • test_bot.py9
  • test_control.py8
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 amateur · Recomendado

Para clubs amateurs

Tu club competitivo con plataforma propia sin arruinar tu cartera.

3919/mes · setup 299€
Oferta primeros 3 meses
  • Setup y brandeo del clubincluido
  • Subdominio propioincluido
  • Hospedaje en nuestro VPSincluido
  • Bot Discord configuradoincluido
  • Hasta 6 equiposincluido
  • Actualizaciones continuasincluido
  • Backups diariosincluido
  • Soporte por emailincluido
299€ pago único al configurar + cuota mensual de mantenimiento. Sin permanencia, cancela cuando quieras.
SaaS profesional

Para organizaciones serias

Mismo producto sin límite de equipos, soporte prioritario y subdominio premium.

20099/mes · setup 399€
Oferta primeros 3 meses
  • Hospedaje dedicadoincluido
  • Subdominio o dominio propioincluido
  • Equipos ilimitadosincluido
  • Soporte prioritarioincluido
  • Onboarding (2h)incluido
  • SLA 99.5% uptimeincluido
  • Backups + 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.

12.500
  • Código fuente completoincluido
  • Web + portal + botincluido
  • Despliegue en tu VPSincluido
  • Documentación técnicaincluido
  • Onboarding (4h)incluido
  • Soporte primer 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.
Nuestro coste operativo

Transparencia total

Lo que nos cuesta a nosotros mantener una instancia viva.

~85/mes
  • Servidor~45 €
  • Dominio .es~1 €
  • SSL Let's Encrypt0 €
  • PostgreSQL self-hosted0 €
  • Twitch / YouTube API0 €
  • Bot Discordincluido
  • Backups automáticosincluido
  • Margen / imprevistos~39 €
Por cada instancia. La diferencia con tu cuota va a soporte, evolución del producto y supervivencia.
Tecnologías

Stack completo

Solo herramientas modernas, mantenidas y con comunidad activa.

Next.js 16React 19TypeScript 5Tailwind CSS 4PostgreSQL 16Drizzle ORMpostgres.jspgliteiron-sessionbcryptjsZodXSS sanitizationFramer MotionPDF-libVitestPlaywrightESLint 9Python 3 + 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 · hola@ventucorp.es