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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證App de entrenamiento
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
App web de entrenamiento dinámico y por objetivo para gravel — la evolución del plan estático de ruralcycle.cc/entrenamiento. Se sirve embebida en app.ruralcycle.cc. Principio rector: usabilidad ante todo. Máximo 4 toques para ver tu plan. Cero jerga técnica en el flujo. Si algo se puede autocompletar desde Strava, no se pregunta.檢視完整 README ↗
App web de entrenamiento dinámico y por objetivo para gravel — la evolución del plan estático de ruralcycle.cc/entrenamiento. Se sirve embebida en app.ruralcycle.cc.
Principio rector: usabilidad ante todo. Máximo 4 toques para ver tu plan. Cero jerga técnica en el flujo. Si algo se puede autocompletar desde Strava, no se pregunta.
supabase/schema.sql.ZWO (Zwift), .ERG, PDF semanal — .FIT preparado para Fase 1.5npm install
cp .env.example .env.local # pega tus llaves (o déjalo en modo mock)
npm run dev # http://localhost:3000
Sin credenciales, la app corre en modo mock (NEXT_PUBLIC_MOCK_MODE=true): el flujo
completo de 4 toques funciona end-to-end, Strava se simula con una salida de ejemplo y el
pago Wompi se simula para desbloquear el plan.
src/lib/plan-engine.ts — periodización automática (base → construcción → específico →
tapering, última semana siempre taper), sesiones según días/horas, objetivos en %FTP (zonas
Coggan) + %FC umbral, más técnica gravel cuando el evento tiene alto %gravel, y TSS por sesión.
Recalibración de FTP tras cada salida en src/lib/zones.ts (recalibrarFtp).
supabase/schema.sql y luego supabase/seed.sql.Project URL y anon key a .env.local. service_role solo para backend.7026608 es tu athlete ID, no el Client ID).localhost (dev) / app.ruralcycle.cc (prod).curl -X POST https://www.strava.com/api/v3/push_subscriptions \
-F client_id=TU_CLIENT_ID -F client_secret=TU_CLIENT_SECRET \
-F callback_url=https://app.ruralcycle.cc/api/strava/webhook \
-F verify_token=rural-coach-verify-2026
7026608) y escala tras aprobación.public key, private key, events secret e integrity secret en .env.local.https://app.ruralcycle.cc/api/wompi/webhook.Heredada de la web live: mostaza #D4A62E, oliva #4A5A3A, terracota #B5652D, carbón
#1C1B19/#2B241C, crema #F0EBE0; tipografía condensada (Anton + Barlow Condensed +
Barlow) y textura topográfica de La Sabana. Tokens en src/app/globals.css.
src/
app/ páginas (/ , /onboarding , /plan) + rutas API
api/ plan · strava/{callback,webhook} · wompi/{checkout,webhook} · export/[format]
lib/ plan-engine · zones · strava · wompi · pricing · export/{zwo,erg,pdf,fit} · store
components/ Header
types/ modelos de dominio
supabase/ schema.sql (RLS) + seed.sql
Sensores en vivo (Web Bluetooth HR+potencia, Android/desktop), gráfico de forma física
CTL/ATL/TSB (metrics_snapshots), comunidad/rodadas, app nativa, exportación .FIT.
Rural Cycle — Creamos experiencias sobre la bici por caminos poco transitados. Sabana de Bogotá.