Nahuel Cabral
EN
← Todos los proyectos

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

Visitar el sitio (se abre en una pestaña nueva)

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
  • Inicio: próxima fecha, anotados y nivel de cada jugador
    Inicio: próxima fecha, anotados y nivel de cada jugador
  • Sorteo de equipos nivelado por nivel, repartido en canchas
    Sorteo de equipos nivelado por nivel, repartido en canchas
  • Ranking con rachas y puntos de la última fecha
    Ranking con rachas y puntos de la última fecha
  • Historial de partidos con los puntos ganados y perdidos
    Historial de partidos con los puntos ganados y perdidos
  • Perfil del jugador con evolución de nivel y estadísticas
    Perfil del jugador con evolución de nivel y estadísticas
  • El mismo ranking en modo claro
    El mismo ranking en modo claro
  • Pantallas grandes: navegación lateral, ranking y títulos del grupo
    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
    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.

Equipos
Equipo A
72% de ganar
Equipo B
28% de ganar
Ganador

Este resultado movería

  • Ana+2
  • Beto+2
  • Caro−1
  • Dani−1

Ranking

Ranking
#JugadorNivelG–PRacha
1Ana
60−2
4–1−1
2Beto
55+3
3–2+2
3Dani
50+3
2–3+1
4Caro
45−2
1–4Calentando

Historial de partidos

  1. Beto + Dani 7–6 Ana + Caro+3 / −2
  2. Ana + Beto 6–1 Caro + Dani+3 / −2
  3. Ana + Dani 7–5 Beto + Caro+3 / −2
  4. Ana + Caro 6–4 Beto + Dani+3 / −2
  5. 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
Próximo proyectoQuinta Delisandro — Sitio web y sistema de reservas →