OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 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.