OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
The NBA app in French: live scores, schedule, standings, player and team statistics, news, articles and mini-games. Follow the entire NBA season on Hoopus.
AI translation
L'app NBA en français : scores en direct, calendrier, classements, statistiques des joueurs et des équipes, actualités, articles et mini-jeux. Suivez toute la saison NBA sur Hoopus.
Sports & fitnessTypeScript · JavaScriptGitHub @MaelAbatLatest connection check failedOwner 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
French-language NBA companion app — live scores, schedule, standings, stats and mini-games. Built with Next.js + Supabase.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A French-language NBA companion app: live scores, schedule, standings, stat leaders, player career stats, playoffs, news, articles, and mini-games.
Live at hoopus.fr.
• Framework — Next.js 16 (App Router, React 19, TypeScript)
• Styling — Tailwind CSS 4
• Database & Auth — Supabase (Postgres with Row Level Security)
• Hosting — Vercel (cron jobs included)
• Data sources — NBA Stats API, ESPN, YouTube Data API v3Read the full README ↗A French-language NBA companion app: live scores, schedule, standings, stat leaders, player career stats, playoffs, news, articles, and mini-games.
Live at hoopus.fr.
NEXT_PUBLIC_TRADE_MACHINE=1 to enable it)Prerequisites: Node.js 20+, a Supabase project, a YouTube Data API v3 key.
git clone https://github.com/MaelAbat/hoopus.git
cd hoopus
npm install
cp .env.example .env.local
# fill in the values in .env.local
npm run dev
The dev server runs on http://localhost:3002.
See .env.example for the full list. You will need:
NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY — client-side Supabase access (safe to expose, protected by RLS)SUPABASE_SERVICE_ROLE_KEY — server-side admin access (keep secret)CRON_SECRET — shared secret for authenticating cron job callsYOUTUBE_API_KEY — for fetching match highlight videosNEXT_PUBLIC_SITE_URL — used for auth redirectsMigrations live in supabase/migrations/ and run in numerical order. Apply them through the Supabase dashboard or the Supabase CLI.
Game data, standings, stats, and rosters are refreshed via a daily Vercel cron at 08:00 UTC (vercel.json). Individual sync endpoints exist under /api/sync-* and require the CRON_SECRET in the Authorization header.
To run a sync manually from the command line:
npm run sync # full sync
npm run sync:history # backfill historical games
npm run sync:market # backfill the transaction market and drafts (2015-16 → today)
npm run sync:market -- --drafts-since 1950 # every NBA draft, no transactions
Drafts and transactions have different horizons on purpose. Transactions start in 2015-16, like the rest of the site: earlier than that, no rosters or standings exist to give them meaning. A draft stands on its own, so the archive goes back to 1950 — the first NBA draft, the 1947-1949 ones having been run by the BAA.
sync:market is deliberately kept out of the cron: it reads one Basketball Reference
page per season at a polite 3.2s interval, which is far beyond the 60s a serverless
function gets. The daily cron keeps the current season fresh (/api/sync-transactions,
/api/sync-draft); this script fills in the past.
src/app/ Next.js App Router pages and API routes
src/components/ Reusable React components
src/lib/ Supabase clients, data fetchers, utilities
scripts/ CLI sync scripts (tsx)
supabase/ SQL migrations
public/ Static assets
Pushes to main are auto-deployed by Vercel. Environment variables are managed in the Vercel dashboard. No CI runs in this repository (.gitlab-ci.yml disables GitLab pipelines).
ISC.