BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2,或任何藍牙控制器搭配 MyWhoosh、Rouvy、Zwift 等。可於 iOS、Android、Windows 與 macOS 免費試用。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Live padel tournament operations platform: team entry, group draws, match scheduling, live
referee scoring (with offline support), leaderboards, knockout brackets, TV display screens,
clone tournament, and Excel export.
Built per docs/move_beyond_tournament_management_spec.md (V1 MVP).
• Next.js 16 (App Router, server components + server actions) · React 19 · Tailwind v4
• Supabase Postgres + Storage (project move-beyond-tournaments, eu-west-1)
• Dexie (IndexedDB) offline scoring queue · ordered event sync with device lock
• ExcelJS export · @dnd-kit drag/drop · Vitest unit tests檢視完整 README ↗Live padel tournament operations platform: team entry, group draws, match scheduling, live referee scoring (with offline support), leaderboards, knockout brackets, TV display screens, clone tournament, and Excel export.
Built per docs/move_beyond_tournament_management_spec.md (V1 MVP).
move-beyond-tournaments, eu-west-1)npm install
npm run dev # http://localhost:3000
npm test # scoring engine + core lib unit tests (vitest)
npx tsx --env-file=.env.local scripts/smoke.ts # full E2E simulation vs live DB
.env.local (see .env.example) needs:
| Variable | Purpose |
|---|---|
SUPABASE_URL, SUPABASE_KEY | Database/storage access. Server-side only — never shipped to the browser. |
AUTH_SECRET | HMAC secret for the session cookie. |
ADMIN_PASSWORD, MANAGER_PASSWORD, REFEREE_PASSWORD, OPERATOR_PASSWORD | Shared access codes per role (spec §4.2). Change before the event. |
One login page (/login) — the access code determines the role:
admin and manager → admin console (/admin), referee → referee console (/referee),
operator → TV control (/operator). Public pages need no login.
/t/<slug>/screen on the display; the operator switches modes
(leaderboard / live courts / bracket / winner / sponsors), theme, and sponsor rotation./t/<slug> mobile overview (groups, live, upcoming)
/t/<slug>/leaderboard standings
/t/<slug>/live live scoreboards
/t/<slug>/bracket knockout tree
/t/<slug>/winner podium
/t/<slug>/screen full-screen TV display (operator-controlled)
Public screens are read-only and poll every ~5–8s (spec §19.5 fallback strategy).
score_events row with
previous/new state; match_score_snapshots holds the current state; audit_logs records
sensitive actions. The referee client owns live state (offline-first) and syncs ordered
events; the server rejects out-of-sequence batches and non-controlling devices (409).src/app/globals.css (:root + .theme-dark) per spec §3.5 —
swap colors there when the Move Beyond brand identity lands.Set the env vars above in the Vercel project, deploy, done. The Supabase project is already
provisioned with the schema (supabase/migrations equivalent applied via MCP —
tables: tournaments, teams, players, courts, groups, group_teams, matches,
match_score_snapshots, score_events, standings_snapshots, brackets, bracket_slots,
check_in_logs, audit_logs, screen_settings, clone_logs + public media storage bucket).