Saltar al contenido
David Saghatelyan

GrupalPersonalEn desarrollo

appFut

PWA mobile first para organizar partidos de fútbol, con gestión de jugadores, pagos y suplentes.

Mi aporte
Desarrollé la interfaz, la creación de partidos con código y link de invitación, y el inicio de sesión con Google. El flujo para sumarse, darse de baja o cambiar de equipo lo hicimos en conjunto.
Tecnologías
  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind
  • Supabase (Postgres, Auth, Storage, RLS)
  • Vitest

Contexto

App para organizar partidos de fútbol amateur entre amigos (5 contra 5, 6 contra 6), con gestión de los pagos de la cancha mediante comprobantes.

Problema

El organizador necesita saber quién juega y quién pagó su parte de la cancha. Además, sumarse no puede obligar a los invitados a registrarse.

Solución

- El organizador inicia sesión con Google, crea el partido y comparte un código o un link de invitación. - Los jugadores se suman ingresando solo su nombre y entran a la reserva. - Los equipos los arma el organizador, o cada jugador elige el suyo. Quienes quedan en un equipo son titulares y reparten el costo de la cancha. - Si un titular se da de baja, el primero de la reserva ocupa su lugar automáticamente. - Cada titular sube el comprobante o declara el pago sin comprobante, y el organizador lo confirma o lo rechaza.

Arquitectura

- Next.js 16 (App Router), con las escrituras resueltas en Server Actions. - Supabase: Postgres con RLS y triggers; Auth, con Google para el organizador y sesiones anónimas para los jugadores; y Storage para los comprobantes.

Decisiones

- Jugadores sin cuenta. Al principio se identificaban con un ID guardado en el navegador. Después pasaron a usar una sesión anónima de Supabase, así las reglas de RLS se aplican con una identidad firmada. - Pagos. Solo el organizador puede confirmar un pago. Lo que marca el jugador queda como "pendiente de confirmación". - Redirecciones. El callback del inicio de sesión solo acepta redirecciones a rutas internas.

Dificultades

- El inicio de sesión con Google. - Recuperar el acceso con el nombre cuando se borra la caché del navegador.