El club entero, en el bolsillo del socio
Plataforma multi-tenant para clubes de Golf y Pitch & Putt: gestión de socios con roles, campos con hoyos detallados, circuitos por equipos, tarjetas interactivas con QR validadas entre jugadores y cálculo WHS del hándicap, todo bajo un billing por usuario en Stripe.
Una sola app, cuatro audiencias en juego
El socio entra a ver sus tarjetas y hándicap. El admin del club gestiona socios, circuitos y facturación. El caddie ayuda a meter resultados sobre el campo. El superadmin opera la plataforma. Cada rol ve solo lo suyo, con su propia experiencia.
Lo que ocurre antes, durante y después del torneo
La app cubre el ciclo completo: el club da de alta a sus socios, configura el campo y el circuito, los grupos juegan con tarjeta interactiva y al cierre se publican resultados y se actualiza el hándicap.
Clubes multi-tenant
Cada club vive en su propio espacio aislado con su admin, socios e invitaciones por email. El superadmin ve todos los clubes, los admins solo el suyo.
Campos con hoyos detallados
Cada campo guarda par, stroke index y metros por tee (Blanco, Amarillo, Azul, Rojo). 9 ó 18 hoyos, Golf o Pitch & Putt, con audit log de cambios.
Circuitos y torneos
Circuitos por club con varias jornadas. Individual, parejas o equipos. Tres modalidades de puntuación: Stroke Play Scratch, Stableford HCP y Stableford Scratch.
Grupos con horarios
Generador de grupos por torneo con hora de salida y hoyo de salida (shotgun). El admin reordena, edita y rota grupos con drag & drop.
Tarjeta interactiva pública
Cada grupo recibe un token y un QR. Cualquier jugador del grupo abre la tarjeta sin login, mete resultados hoyo a hoyo y otro jugador valida en cruzado.
Validación cruzada
Cada puntuación lleva el ID del jugador validador y un set paralelo de resultados de validación. Cierre del torneo cuando ambas filas cuadran.
Cálculo WHS del hándicap
Reglas WHS Rule 6.2 implementadas: jugadores plus devuelven golpes en los stroke index altos. Stableford con sun-highlight en hoyos de pickup.
Simulador HCP P&P
Antes de jugar el torneo, el socio simula una ronda sobre cualquier campo y ve cómo cambiaría su hándicap Golf o Pitch & Putt. Útil para previsión.
Billing Stripe por usuario
Suscripción por miembros activos del club. Webhooks Stripe mantienen status, cycle (mensual/anual) y memberCount sincronizados con Firestore.
Invitaciones por email
El admin invita socios por email con un rol asignado (clubadmin, caddie, jugador). Estado pending/accepted/declined, banner de invitaciones en el home.
Histórico de puntuaciones
Cada socio ve su feed cronológico de rondas con desglose de Stableford, eagles, birdies, golpes totales y evolución del hándicap por circuito.
PWA offline-friendly
Instalable en iOS y Android con iconos adaptativos. Sync local con dedup y reconciliación cuando vuelve la red. Cola de escrituras non-blocking.
Cuatro pasos: del alta al cierre
Lo bonito de Par o Nada es que el club no inventa nada para cada torneo: sigue siempre el mismo flujo y la app guía a cada rol por lo suyo.
Configuración
El admin crea el circuito, elige modalidades, disciplina, género y categorías. Se asignan los socios participantes desde la base del club.
Torneo y grupos
Se da de alta el torneo en una jornada concreta sobre un campo. El generador propone grupos balanceados por hándicap; el admin reordena y fija horarios.
Juego con tarjeta
Cada grupo abre su tarjeta vía QR. Anota golpes hoyo a hoyo, ve sus puntos Stableford en vivo y deja que otro jugador del grupo valide su tarjeta.
Cierre y hándicap
Al cerrar la ronda se calcula el ajuste de hándicap WHS. La puntuación entra al histórico del socio y al leaderboard del circuito automáticamente.
Operar la plataforma desde un solo panel
Pensado para el equipo que mantiene Par o Nada: vista global de clubes, campos, actividad, datos fantasmas y configuración de precios.
Clubes
Listado global, billing activo, número de miembros, último cobro Stripe.
Campos
Catálogo global de campos y editor de hoyos con historial de cambios.
Usuarios
Vista global de cuentas, búsqueda y promoción a superadmin/clubadmin.
Circuitos
Lista cross-club de circuitos activos para soporte y debugging.
Actividad
Feed de audit logs de los últimos cambios en campos. Quién, qué y cuándo.
Mantenimiento
Configuración de precios globales (price per user) y operaciones de billing.
Datos fantasmas
Detector de cuentas huérfanas, miembros sin perfil y referencias rotas.
Desarrollo
Herramientas internas de seed, migración y limpieza para el equipo dev.
Versión
Endpoint de versión activa con banner de actualización para clientes ya abiertos.
Cuando el dato tiene consecuencias oficiales
Un resultado deportivo no es un dato cualquiera: modifica el hándicap federativo de una persona y decide quién gana un torneo. Eso obliga a construir con un nivel de integridad que la mayoría de aplicaciones no necesita.
Integridad de la competición, por diseño
Solo el dueño de una tarjeta puede firmarla, el desacuerdo con el marcador se ve y frena la firma, y una tarjeta anulada deja constancia del motivo. Fuera del grupo, nadie toca nada.
Por qué tiene mérito
Cada una de esas reglas nació de un caso real de conflicto en un club. Se aplican en el servidor, no en la pantalla: aunque alguien manipule la aplicación desde su móvil, la regla se cumple igual porque quien manda es la base de datos.
El hándicap se calcula, nunca se teclea
El hándicap del jugador lo calcula el sistema según la norma mundial vigente, por disciplina (golf y pitch and putt), y el jugador puede ver de dónde sale cada número.
Por qué tiene mérito
Es una norma con casos límite de verdad: vueltas a medias, rondas sin marcador, valoraciones distintas por salida y por recorrido. Se auditó la aplicación entera contra el reglamento federativo, cruzando texto normativo con comportamiento real del código.
Formatos de competición configurables, no cerrados
Cada club decide el formato de su torneo: cuadros de eliminatorias, circuitos por equipos, de cuántos en cuántos se sale al campo y qué cuenta para la clasificación.
Por qué tiene mérito
Lo fácil es fijar un formato en el código y que todos se adapten. Aquí el reparto de grupos de salida es una pieza central que usan tanto la aplicación como las herramientas internas, así que añadir un formato nuevo no obliga a tocar lo que ya funciona.
El catálogo de campos se alimenta solo
Dar de alta un campo de golf no es teclear 18 hoyos a mano: el sistema lee la web oficial del club y extrae la tarjeta, las valoraciones y las láminas de cada hoyo.
Por qué tiene mérito
Además cruza lo que publica el club con lo que ya tiene la ficha y emite un informe de qué falta o qué está ilegible. Es automatización de la carga de datos, la tarea que normalmente hunde el lanzamiento de una plataforma de este tipo.
Publicada en Google Play, y funcionando sin cobertura
La app está en la tienda oficial de Android. Y en mitad del campo, donde casi nunca hay señal, se sigue anotando: los golpes se guardan en el móvil y se sincronizan al recuperar cobertura.
Por qué tiene mérito
Trabajar sin conexión obliga a resolver qué pasa cuando dos jugadores anotan el mismo hoyo desde móviles distintos y luego se reencuentran. La reconciliación está diseñada para que nunca se pierda un golpe ni se dupliquen las tarjetas.
Next.js + Firebase + Stripe
App moderna en Next.js 15 con React 19, datos en Firestore con reglas de seguridad por rol y un toque de IA con Genkit para el generador de formatos.
Frontend
App de socios y admins
Backend
Datos y billing
IA y Tooling
Extras y calidad
El esfuerzo detrás de Par o Nada
Desglose de Esfuerzo por Módulo
470 horas de desarrollo, equivalentes a 2,8 mesesde una persona a jornada completa.
¿Por qué se construyó de esta manera?
¿Por qué multi-tenant en una sola app?
Cada club querría su instancia, pero mantener N despliegues es un coste fijo prohibitivo. Con multi-tenant en Firestore (clubs/{clubId} con subcolecciones aisladas y reglas por rol) hay una sola app que escala. El admin de un club solo ve lo suyo, el superadmin ve la plataforma entera. Cero divergencia entre clubes.
¿Por qué Firestore y no SQL?
Las puntuaciones llegan en lotes desde la tarjeta interactiva con sync offline. Firestore facilita escrituras non-blocking, reglas de seguridad por rol/club y subcolecciones jerárquicas (club → circuito → torneo → puntuación). En SQL habría que pelearse con ACLs por fila y resolver el offline a mano.
¿Por qué tarjeta pública con token, no login?
Los jugadores no quieren crear cuenta para anotar resultados en el campo. El admin genera el grupo y reparte un QR. Anonymous Auth de Firebase + reglas de Firestore limitadas a la ruta /tarjetaTokens/{token} dan acceso justo, sin contraseñas. Si abusan, se revoca el token.
¿Por qué validación cruzada entre jugadores?
En golf federativo cada tarjeta la firma otro jugador. La app guarda los resultados originales y los del validador como sets paralelos. Si no cuadran, el admin ve la discrepancia hoyo a hoyo y decide. Es lo mismo que hace el comité federativo, pero digitalizado y trazable.
¿Por qué Stripe con quantity dinámica?
Los clubes pagan por miembros activos. Cuando un socio se da de alta, el webhook actualiza la quantity de la subscription Stripe automáticamente. El admin del club ve el desglose y los superadmins fijan el precio global desde /admin/mantenimiento sin tocar código.
¿Por qué incluir un simulador de hándicap?
Antes de jugar el torneo real, el socio quiere saber cómo va a quedar su hándicap. El simulador toma un campo cualquiera, golpes por hoyo y devuelve el ajuste WHS en tiempo real. Es la mejor manera de educar al socio sobre el efecto de un eagle, un birdie o un pickup.
¿Tu club todavía vive en Excel y WhatsApp?
Si tu club, federación o circuito amateur necesita gestionar socios, torneos y hándicaps sin papeles, te montamos una plataforma como Par o Nada adaptada a tu reglamento y tu marca.
Proyecto desarrollado por Automatiza ToDo · Todos los datos son aproximaciones públicas