OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
Arma la alineación del equipo en menos de un minuto
Translation pending
Sports & fitnessTypeScript · PLpgSQLGitHub @WaltherMoraRiveraOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗App web mobile-first para gestionar un equipo de fútbol amateur: plantilla, partidos, asistencia, formación, bitácora del partido en vivo y estadísticas de temporada. Está en uso real por el equipo Decom FC.
Objetivo: que el capitán arme la alineación de un partido en menos de un minuto desde el celular.
🔗 Producción: https://formacion-ya.vercel.app
| Módulo | Descripción |
|---|---|
| Plantilla | Alta, edición y baja de jugadores, con alias, posiciones y pie hábil. Importación y exportación por CSV o JSON, con validación fila por fila. |
| Partidos y asistencia | El DT agenda partidos y cada jugador confirma su asistencia desde su teléfono. Notificaciones push a quien tiene la asistencia pendiente. |
| Formación | 7 esquemas tácticos (4-4-2, 4-3-3, 3-5-2, entre otros). Autoasigna a los asistentes según su posición y permite reordenar con drag & drop. |
| Pizarra táctica | Instrucciones por jugador, mapa táctico individual con flechas y zonas dibujadas a mano alzada, y zonas de influencia sobre la cancha. |
| Compartir | Exporta la formación como imagen PNG y la envía por la Web Share API, por ejemplo a WhatsApp. |
| Bitácora en vivo | Goles, tarjetas, cambios y comentarios cargados durante el partido. Se ven en tiempo real en todos los dispositivos con Supabase Realtime. |
| Resultados y estadísticas | El marcador se calcula desde la bitácora. Récord del equipo y tabla por jugador con convocatorias, minutos jugados, goles y tarjetas. |
| PWA | Instalable desde el navegador, con guía para iPhone. También hay un .apk para Android. |
Sin contraseñas individuales: cada dispositivo inicia sesión de forma anónima y se une al equipo con un código compartido. Hay cuatro roles: jugador, DT/capitán, asistente (apoya la carga en vivo) y admin (pruebas).
Los permisos se aplican con Row Level Security de Postgres, así que se hacen cumplir en el servidor y no solo en la interfaz.
| Capa | Tecnología |
|---|---|
| Framework | Next.js 16 (App Router), React 19, TypeScript |
| Estilos y UI | Tailwind CSS v4, shadcn/ui sobre Base UI, Framer Motion |
| Estado | Zustand |
| Backend | Supabase: Postgres con RLS, Auth anónima y Realtime |
| Interacción | dnd-kit (drag & drop), html-to-image (exportar imagen), web-push (notificaciones) |
| Despliegue | Vercel, con deploy automático desde main |
DragOverlay de dnd-kit para que la tarjeta arrastrada no se recorte al salir de contenedores con overflow.dev → preview → main: los cambios se prueban primero en la rama dev, que Vercel despliega en una URL de preview, y solo se mezclan a main tras confirmarlos, porque la app está en uso real.npm install
npm run dev
Abre http://localhost:3000. Necesita un archivo .env.local (no versionado) con:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
NEXT_PUBLIC_VAPID_PUBLIC_KEY=
VAPID_PRIVATE_KEY=
VAPID_SUBJECT=
Las migraciones SQL están en supabase/migrations/.
El detalle completo (arquitectura, modelo de datos, funcionalidades por fase y roadmap) está en DOCUMENTACION.md.