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.
Gérer ses entraînements musculation et cardio comme une aventure RPG
Translation pending
AI summary · website and README
Sports & fitnessTypeScript · VueGitHub @LastCoder25OnlineOwner 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
Loading the full README. The saved excerpt is shown below.
Stack : Quasar (Vue 3 / Vite / TS) côté front, Supabase (Postgres + auth) côté back, Vercel (Hobby, gratuit) pour héberger le front statique. Tout repose sur le contrat JSON v1.0. Arborescence à reporter dans ton projet Quasar : Étape 1 — Supabase (base + auth)Read the full README ↗
Stack : Quasar (Vue 3 / Vite / TS) côté front, Supabase (Postgres + auth) côté back, Vercel (Hobby, gratuit) pour héberger le front statique. Tout repose sur le contrat JSON v1.0.
Arborescence à reporter dans ton projet Quasar :
mon-projet-quasar/
├─ .env ← copié depuis .env.example, rempli
├─ vercel.json ← routing SPA pour Vercel
├─ supabase/
│ └─ migrations/0001_init.sql
└─ src/lib/
├─ supabase.ts ← client
├─ types.ts ← types = contrat JSON
├─ levelConfig.ts ← adaptation par niveau
├─ progression.ts ← moteur déterministe
└─ coach.ts ← export/import IA
supabase/migrations/0001_init.sql → Run. Ça crée les 4 tables + les RLS.npm init quasar # → App with Quasar CLI ; Vite ; Vue 3 ; TypeScript ; Pinia
cd mon-projet-quasar
npm i @supabase/supabase-js
src/lib/ et supabase/ fournis dans le projet..env.example en .env et renseigne SUPABASE_URL + SUPABASE_ANON_KEY.import { supabase } from 'src/lib/supabase';
const { data, error } = await supabase.from('sessions').select('*');
console.log(data, error); // [] sans erreur = connexion + RLS OK
Otherquasar builddist/spanpm installSUPABASE_URL et SUPABASE_ANON_KEY (mêmes valeurs que le .env).vercel.json fourni gère le routing SPA (toutes les routes → index.html).Rappel : le plan Hobby est gratuit mais réservé à un usage personnel non-commercial — ce qui correspond à ton cas (toi + ton pote, aucun revenu).
types.ts est la traduction TS du contrat. Tout le reste s'appuie dessus.levelConfig.ts : experience.level → level_config → comportement (progression, signal d'effort, densité UI…). C'est ici que toi (débutant, linéaire) et ton pote (avancé, double + RIR) divergent sans code dupliqué.progression.ts : le moteur « sans IA ». Lit le dernier session_log, applique les règles, renvoie une session.coach.ts : buildCoachRequest() pour exporter vers ChatGPT, validateImportedSession() pour réimporter le JSON renvoyé en toute sécurité (whitelist stricte).Moteur et IA produisent le même type (Session) — l'app les traite de façon identique.
profiles, dérive level_config, bifurque selon le niveau).progression.ts).coach.ts).