/ Caso de estudio · Producto
Por Tres — Grupos, ranking y torneos de pádel
Por Tres es una aplicación web progresiva (PWA) para grupos y clubes de pádel: sorteo de equipos, ranking con niveles y rachas, historial de partidos y torneos. Cada grupo tiene sus propios datos, aislados del resto, y toda la autorización se resuelve del lado del servidor sin backend propio. Los clubes pueden organizar torneos con inscripción por QR, zonas y llaves, medallas y métricas del club.
- Rol
- Desarrollo full stack en solitario: frontend, modelo de datos, reglas de seguridad de Firestore y CI/CD.
- Duración
- Producto propio de KBRA Studio, en uso real desde julio de 2026
- Cliente
- KBRA Studio (producto propio)
- Año
- 2026
Capturas

Inicio: próxima fecha, anotados y nivel de cada jugador 
Sorteo de equipos nivelado por nivel, repartido en canchas 
Ranking con rachas y puntos de la última fecha 
Historial de partidos con los puntos ganados y perdidos 
Perfil del jugador con evolución de nivel y estadísticas 
El mismo ranking en modo claro 
Pantallas grandes: navegación lateral, ranking y títulos del grupo 
Inicio de escritorio en modo claro, con la próxima fecha y la mejor dupla del mes
/ Probalo
Jugá con el motor de ranking real
Corre las mismas reglas que usa Por Tres: puntos tipo ELO por expectativa, un plus por llevar a un compañero más flojo, un extra por cortar una racha imparable y el margen del resultado. Cargá partidos y mirá cómo se mueven los niveles. Nada sale de tu navegador.
- Equipo A
- 72% de ganar
- Equipo B
- 28% de ganar
Este resultado movería
- Ana+2
- Beto+2
- Caro−1
- Dani−1
Ranking
| # | Jugador | Nivel | G–P | Racha |
|---|---|---|---|---|
| 1 | Ana | 60−2 | 4–1 | −1 |
| 2 | Beto | 55+3 | 3–2 | +2 |
| 3 | Dani | 50+3 | 2–3 | +1 |
| 4 | Caro | 45−2 | 1–4 | Calentando |
Historial de partidos
- Beto + Dani 7–6 Ana + Caro+3 / −2
- Ana + Beto 6–1 Caro + Dani+3 / −2
- Ana + Dani 7–5 Beto + Caro+3 / −2
- Ana + Caro 6–4 Beto + Dani+3 / −2
- Ana + Beto 6–3 Caro + Dani+3 / −2
Simplificado para la demo: sin decaimiento por inactividad (la app descuenta 1 punto por semana tras un mes sin jugar). El resto del motor es el mismo.
El problema
Un grupo de pádel que coordina partidos por WhatsApp no tiene forma de armar equipos parejos, llevar un ranking confiable ni garantizar que nadie pueda manipular sus propios resultados o los del resto del grupo.
La solución
Una plataforma multi-grupo (los datos de un grupo nunca se mezclan con los de otro) con sorteo de equipos, un ranking que se recalcula siempre desde el historial completo de partidos —nada queda precalculado—, rachas y títulos exclusivos por grupo para gamificar la participación, y un modelo de roles (super de plataforma, dueño, admins con permisos por tiempo, miembros) cuya autorización se aplica del lado del servidor en reglas de Firestore, sin necesidad de un backend propio.
Detalles técnicos
Front-end
- React 19
- React Router 7
- Vite
- PWA instalable (vite-plugin-pwa)
Back-end / datos
- Firebase Authentication (Google y email/contraseña)
- Firestore como única fuente de datos
- Sin backend propio: toda la autorización vive en firestore.rules
Funcionalidades
- Sorteo de equipos, al azar o nivelado
- Ranking dinámico con niveles (1-99) recalculado desde el historial de partidos
- Rachas y títulos exclusivos por grupo (gamificación)
- Historial de partidos y torneos con ranking propio
- Torneos para clubes: inscripción por QR, zonas y llaves, medallas y métricas del club
- Alta por invitación con códigos que expiran, se renuevan o se rotan
- Roles con permisos graduales: super de plataforma, dueño de grupo, admins temporales, miembros
- Registro de auditoría de solo lectura (append-only)
- Directorio de predios y canchas
- Español e inglés, con modo claro y oscuro
- Diseño adaptable con navegación lateral en pantallas grandes
Testing y CI/CD
- Vitest para lógica de negocio (ranking, canchas, backups)
- Reglas de Firestore testeadas contra el emulador (~90 casos) con @firebase/rules-unit-testing
- GitHub Actions: lint + tests + build en cada push y PR, preview URL automática por PR
- Deploy automático a Firebase Hosting al mergear a master
- Backup diario automático de Firestore a JSON vía GitHub Actions
Resultado
- Producto en uso real por grupos de pádel
- ~150 casos de test entre lógica de negocio y reglas de seguridad
- Autorización crítica resuelta íntegramente en reglas de Firestore, cubiertas por tests