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).