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á.