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 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.
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 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
Roles diferenciados
Granularidad real. Un jugador no puede tocar a otros equipos. Un staff edita solo lo suyo.
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.
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.
🔐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.ts10
- site.test.ts7
- logger.test.ts4
🚨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
Planes para cada club
Desde clubs amateurs con tesorería ajustada hasta organizaciones que quieren plataforma propia. Elige el que encaje contigo.
Para clubs amateurs
Tu club competitivo con plataforma propia sin arruinar tu cartera.
- Setup y brandeo del clubincluido
- Subdominio propioincluido
- Hospedaje en nuestro VPSincluido
- Bot Discord configuradoincluido
- Hasta 6 equiposincluido
- Actualizaciones continuasincluido
- Backups diariosincluido
- Soporte por emailincluido
Para organizaciones serias
Mismo producto sin límite de equipos, soporte prioritario y subdominio premium.
- Hospedaje dedicadoincluido
- Subdominio o dominio propioincluido
- Equipos ilimitadosincluido
- Soporte prioritarioincluido
- Onboarding (2h)incluido
- SLA 99.5% uptimeincluido
- Backups + monitorizaciónincluido
- Personalización extrapresupuestada
Quieres ser dueño
Te entregamos el código y lo despliegas en tu infra. Independencia total.
- 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
Transparencia total
Lo que nos cuesta a nosotros mantener una instancia viva.
- Servidor~45 €
- Dominio .es~1 €
- SSL Let's Encrypt0 €
- PostgreSQL self-hosted0 €
- Twitch / YouTube API0 €
- Bot Discordincluido
- Backups automáticosincluido
- Margen / imprevistos~39 €
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