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.
Pick pertandingan dalam 3 tap, ajak grup WhatsApp kamu, pantau klasemen. Liga Inggris, Piala AFF, NBA — Bahasa-first, gratis, tanpa iklan.
Translation pending
Sports & fitnessJavaScript · PythonGitHub @adesulcoOnlineOwner 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
Bloomberg-terminal-style live dashboard for the 2026 NBA Playoffs. Polymarket odds + ESPN scores + MVP race, 30s refresh with live WebSocket ticks.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
gibol.co is an Indonesian multi-sport Pick'em platform: invite your grup, pick the score (Tebak Skor), star one jagoan per matchweek, climb the klasemen. Free, no money vocabulary, no betting — gengsi only.
Live competitions: Premier League 2026-27. Next rows: Liga 1 2026-27, NBA 2026-27 (see docs/pickem-flagship/17-PLATFORM-RESET-2026-10-01.md §3).Read the full README ↗gibol.co is an Indonesian multi-sport Pick'em platform: invite your grup, pick the score (Tebak Skor), star one jagoan per matchweek, climb the klasemen. Free, no money vocabulary, no betting — gengsi only.
Live competitions: Premier League 2026-27. Next rows: Liga 1 2026-27, NBA 2026-27 (see docs/pickem-flagship/17-PLATFORM-RESET-2026-10-01.md §3).
gibol.co/g/<code> (case-sensitive invite code).guestStore and are claimed on first login.pickem_score_fixture).Scoring Spec v1 (doc 17 §1): exact score 5 · result + goal difference 3 · result 2 · Nyaris 1 · jagoan ★ ×2 · underdog ×1.5 when fewer than 30 % of pickers took that side at lock.
| Layer | What |
|---|---|
| Frontend | Vite + React 18 SPA. 4a design system (src/pickem/, src/styles/desktop-4a.css), self-hosted Bricolage Grotesque + Instrument Sans. Mobile-first, desktop is CSS-only. |
| API | Vercel functions under api/. One Node dispatcher api/pickem.js?_action=… plus edge functions for share cards and crawler OG. Budget 8/12 Node, edge exempt. |
| Data | Supabase Postgres (supabase/migrations/, applied by hand in the SQL editor). RLS on every user table. |
| Feeds | ESPN public scoreboard (football + NBA). No odds feeds, ever. |
| Jobs | GitHub Actions: football-backfill.yml (every 2 h, scores), health-watch.yml (every 30 min, fails on red scoring), deploy.yml (tests + vocab guard). |
| Observability | /api/health/data-sources (feeds + scoring liveness), Sentry, PostHog (after consent). |
Screens consume only src/pickem/api.js. No direct Supabase calls from screens.
npm install
DEV_API_PROXY=https://www.gibol.co npm run dev # Vite does not run api/; proxy to prod (read-only in practice)
npm test # Vitest
npm run build # tests + vocab guard + vite build + prerender
Verify production with curl, never with build success. Edge functions return 200 with an empty body on throw — check %{size_download}.
curl -s https://www.gibol.co/api/health/data-sources | jq .scoring
curl -s 'https://www.gibol.co/api/pickem?_action=list-fixtures&league=EPL-2026-27&limit=500' | jq '[.fixtures[] | select(.status=="final")] | length'
src/pickem/ — the 4a Pick'em screens, primitives, skins, api.js seamsrc/ (rest) — sport hubs (SEO assets at their canonical URLs), /beranda scores homeapi/ — Vercel functions; api/_lib/pickem/ holds the dispatcher actions and scoring-core.jsscripts/ — backfill + seed scripts, vocab guard, prerender, Satori font testsupabase/migrations/ — schema; 0021_scoring_v1.sql brings Spec v1 (S1)docs/ — 00-STATE.md (where prod is), pickem-flagship/17-… (plan of record), audits/, HANDOVER.md (history)packages/content-engine/ — Kabar content pipeline (Python, paused pending key rotation)Copy is kamu/-mu register with EN and ID keys; named mechanics keep their names (Tebak Skor, jagoan, colek, Nyaris). npm run build runs the vocab guard. Run actionlint before pushing any workflow change. Run scripts/test-satori-fonts.mjs after any font change. Bump APP_VERSION in src/lib/version.js and package.json together and add a line to CHANGELOG.md.
See CLAUDE.md for the full operating rules.