OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
Free F1 prediction league for you and your friends: predict the top 10 of every qualifying, sprint and race. Plus a live race weekend countdown, the full schedule in your time zone, and current champi
Sports & fitnessTypeScript · JavaScriptGitHub @FlashS7OnlineOwner 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
F1 race weekend hub + prediction league
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Race weekend hub + prediction league for friends. Live: https://f1-hub-nu.vercel.app
• Stack: Next.js 16 (App Router) + TypeScript + Tailwind v4, Supabase Postgres, Vercel.
• Data: Jolpica for schedule, standings and results; OpenF1 for Sprint Qualifying results (Jolpica has none).
• Track outlines: generated from bacinger/f1-circuits (MIT): npm run build:circuits.
Everything lives in src/lib/scoring.config.ts: slot points, bonuses, multipliers and the rounding rule.
The logic in src/lib/scoring.ts only reads that object. After changing it:Read the full README ↗Race weekend hub + prediction league for friends. Live: https://f1-hub-nu.vercel.app
npm run build:circuits.Everything lives in src/lib/scoring.config.ts: slot points, bonuses, multipliers and the rounding rule.
The logic in src/lib/scoring.ts only reads that object. After changing it:
npm test
then commit and push. Vercel redeploys. Already scored rounds keep their old points until the league owner presses Recalculate weekend for that weekend.
profiles.is_admin) can rename/remove players and recalculate any league. Private league owners can recalculate theirs.supabase/migrations/.
v1 tables (players, predictions, round_scores, player_devices, pin_attempts) are no longer used; their data was copied by scripts/migrate-to-profiles.mjs.cp .env.example .env.local
Fill in the values, then:
npm install
npm run dev
| Name | Where from |
|---|---|
SUPABASE_URL | Supabase → Connect / Project Settings → Data API → Project URL |
SUPABASE_SERVICE_ROLE_KEY | Supabase → Project Settings → API Keys → Secret key (sb_secret_…) |
CRON_SECRET | any long random string |