BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A fantasy football headquarters for drafting, managing, and researching your leagues. Sync your Sleeper, ESPN, or Yahoo leagues, or run a league natively, and get draft tools, trade and waiver analysis, weekly research, and league history in one place. Half-PPR is the default scoring format.查看完整 README ↗A fantasy football headquarters for drafting, managing, and researching your leagues. Sync your Sleeper, ESPN, or Yahoo leagues, or run a league natively, and get draft tools, trade and waiver analysis, weekly research, and league history in one place. Half-PPR is the default scoring format.
/m.DATABASE_URL) for player_warehouse, synced league snapshots, and research aggregates (CDN-cached /api/data/* routes)You need Node.js and npm — install with nvm.
git clone <this-repository-url>
cd TheLeagueOffice
npm i
npm run dev
Create a .env file in the project root:
# Database A (primary — auth, profiles, site)
VITE_SUPABASE_URL=
VITE_SUPABASE_PUBLISHABLE_KEY=
# Server-only (Database A)
SUPABASE_URL=
SUPABASE_PUBLISHABLE_KEY=
SUPABASE_SERVICE_ROLE_KEY=
# TiDB Serverless (player warehouse + synced snapshots + research aggs)
DATABASE_URL=mysql://USER:PASS@GATEWAY/league-office-native
# Cron / webhook auth
CRON_SECRET=
# Yahoo league sync
YAHOO_CLIENT_ID=
YAHOO_CLIENT_SECRET=
# Press Room + weekly Front Office desks (optional — templates when unset)
GROQ_API_KEY=
# Optional failover / model overrides
GEMINI_API_KEY=
# GROQ_PRESS_ROOM_MODEL=openai/gpt-oss-120b
# GEMINI_PRESS_ROOM_MODEL=gemini-2.0-flash
Set the same variables in your Vercel project settings for deployments.
Retired: Supabase project league-office-brain (Database B) and env vars
VITE_SUPABASE_URL_B / VITE_SUPABASE_ANON_KEY_B. Warehouse + brain hydration
are TiDB + snap-cdn only — see scripts/tidb/CUTOVER.md.
Full guide: scripts/tidb/CUTOVER.md.
DATABASE_URL on Vercel (Production + Preview). Prefer a URL ending in /league-office-native.export APP_URL="https://www.theleagueoffice.app"
export CRON_SECRET="from-vercel"
curl -X POST "$APP_URL/api/admin/tidb-migrate" \
-H "Authorization: Bearer $CRON_SECRET" \
-H "Content-Type: application/json" \
-d '{"action":"migrate"}'
GET /api/admin/tidb-migrate shows playerWarehouseCount ≈ 4000+, and curl -s "$APP_URL/api/data/players-export" | head -c 200 starts with {"ok":true,"v":7./api/webhooks/sync and /api/cron/* — never wire host events to repository_dispatch.| Command | Description |
|---|---|
npm run dev | Start the dev server |
npm run build | Production build |
npm run preview | Preview the production build |
npm run lint | Run ESLint |
npm run format | Format with Prettier |
Supabase migrations live in supabase/migrations. Admin access is granted through profiles.role = 'admin'.