BetCup — Plataforma de apuestas deportivas en vivo | React 19 + FastAPI + SSE

Rexol

ULTRA VIP
Especialista
Creador
Colaborador
Participante
Explorador
Desde
7 Apr 2020
Mensajes
250
Reacciones
147
Honor
122
¡Hola a todos!

Les comparto BetCup, una plataforma de apuestas deportivas en vivo en la que vengo trabajando. Quería mostrarles el proyecto y el stack técnico con el que está construido.

🔗 Demo: https://olympustech.mobilerepair.com.uy:5173/

🎨 Frontend

· React 19 + TypeScript — tipado estricto en todo el proyecto.
· Vite — bundler por su velocidad en desarrollo y build.
· react-router v7 — routing con soporte de loaders y actions.
· Zustand — estado global ligero para sesión, cupón de apuestas y preferencias.
· TanStack Query v5 — cache y sincronización del estado del servidor (cuotas, eventos en vivo, historial).
· i18next — internacionalización lista para múltiples idiomas.
· Tailwind CSS — estilos utilitarios para consistencia visual y velocidad de iteración.

⚙️ Backend

· FastAPI (Python) — API REST con documentación automática (OpenAPI).
· JWT con refresh rotativo — access token de vida corta y refresh que rota en cada uso, invalidando tokens reutilizados.
· CSRF protection — para el flujo con cookies de refresh.
· SSE (Server-Sent Events) — para cuotas y eventos en vivo. Elegí SSE sobre WebSockets porque el flujo es principalmente unidireccional (servidor → cliente) y resulta más simple de escalar y mantener detrás de proxies.

🧠 Puntos técnicos destacados

1. Separación clara frontend/backend con contratos tipados, lo que facilita iterar en ambos lados.
2. TanStack Query + SSE — la query maneja el estado inicial y las mutaciones, mientras el SSE actualiza la cache en tiempo real sin re-fetch completo.
3. Refresh rotativo + CSRF — pensado para mitigar los riesgos típicos de sesiones largas en apps de apuestas.

El proyecto está en desarrollo activo y la demo está disponible para quien quiera verlo funcionando. Cualquier consulta técnica sobre la implementación, con gusto la respondo en los comentarios.

¡Gracias por leer! 🙌