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。 以下为已保存的摘录。
Coach IA élite para jugadores amateur de golf · https://golfersplus.vercel.app ¿Primer día en el proyecto? Empezá por docs/ONBOARDING.md — ruta de lectura ordenada, ~45 min para estar operativo. Este README es solo el punto de entrada. La documentación viva está en docs/: Si hay contradicción entre lo que recuerdes y lo que dice el repo → el repo gana. Antes de trabajar — verificar el repo查看完整 README ↗
Coach IA élite para jugadores amateur de golf · https://golfersplus.vercel.app
Next.js 16 · TypeScript · Tailwind · Supabase · Vercel
¿Primer día en el proyecto? Empezá por docs/ONBOARDING.md — ruta de lectura ordenada, ~45 min para estar operativo.
Este README es solo el punto de entrada. La documentación viva está en docs/:
| Documento | Para qué sirve |
|---|---|
| docs/ONBOARDING.md | Ruta de lectura para devs nuevos (45 min). Si es tu primer día, empezá aquí. |
| docs/ESTADO_ACTUAL.md | Snapshot del último deploy (auto-generado). |
| docs/ARQUITECTURA.md | Stack, schema BD completo, motor src/golf/, design system |
| docs/ROADMAP_COMPLETO.md | Qué viene después |
| docs/SPRINT_LOG.md | Historial de sprints (entrada nueva al inicio) |
| docs/SQL_PENDIENTE.md | Migraciones SQL sin aplicar en Supabase |
| docs/TAIGER_SYSTEM_PROMPT.md | Prompt del coach IA tAIger+ |
| docs/GWI_MODELO.md | Modelo de probabilidades de ganar |
| docs/archive/ | Auditorías y docs históricos (no son estado actual) |
Si hay contradicción entre lo que recuerdes y lo que dice el repo → el repo gana.
Por qué: el proyecto puede estar en cualquier carpeta o computador, pero el repo GitHub es la identidad permanente. La ruta local puede mentir (fork viejo, clon accidental, carpeta renombrada). El remote no.
git remote -v # debe mostrar github.com/juanjoselamarca/tu-golf.git
git branch --show-current # debe mostrar main
git pull origin main # sincronizar antes de tocar nada
Si el remote no es juanjoselamarca/tu-golf → detener y avisar antes de hacer cualquier cambio.
Protocolo completo y reglas para Claude/agentes: CLAUDE.md.
Errores frecuentes al escribir queries. La fuente de verdad completa está en docs/ARQUITECTURA.md.
Nombres de columnas en español (no traducir al inglés por instinto):
| Tabla | Columna correcta | Error típico |
|---|---|---|
course_holes | numero | hole_number |
courses | nombre, ciudad, pais | name |
profiles | role | rol |
rondas_libres | estado: 'en_curso' | 'finalizada' | 'in_progress''closed' |
Regla de persistencia del scoring: siempre guardar gross_score + net_score + points en BD. El modo_juego solo afecta qué se muestra, no qué se guarda.
npm install
npm run dev # http://localhost:3000
npm run test # vitest (1000+ tests)
npx tsc --noEmit # typecheck
npm run build # verifica antes de push
Variables de entorno en .env.local (no comitear). Referencia: .env.example.
Si npm run build falla con EINVAL en .next/: es OneDrive sincronizando. rm -rf .next && npm run build lo resuelve.
Hay un pre-push hook en .git/hooks/ que bloquea si cualquiera de estos falla:
npx tsc --noEmit (0 errores)npm run test (incluye tests canario que detectan patrones peligrosos)npm run buildComando combinado: /pre-push (skill de Claude Code).
Archivos protegidos que nunca se modifican sin protocolo explícito (ver CLAUDE.md):
src/components/Navbar.tsx · src/app/layout.tsx · src/proxy.ts · src/lib/supabase.ts.