BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Escoge tu evento, conéctate con Strava y recibe tu plan de gravel al instante.
Translation pending
Sports & fitnessTypeScript · PLpgSQLGitHub @niviadesignerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
App de entrenamiento
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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.Read the full 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á.