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.