BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2,或任何藍牙控制器搭配 MyWhoosh、Rouvy、Zwift 等。可於 iOS、Android、Windows 與 macOS 免費試用。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Ask a rules question about a women's sport and get a plain-language answer taken only from the official rulebook, with the rule cited and a link to the exact page of the official PDF.
Currently covers 10 league pages across 5 sports:
| Sport | Leagues |
|---|---|
| Volleyball | NCAA, Pro (USA Volleyball rules) |
| Basketball | NCAA, WNBA |
| Soccer | NCAA, NWSL (IFAB Laws + NWSL competition rules) |
| Rugby | All leagues (World Rugby Laws, for college, USA Rugby and WER) |
| Hockey | NCAA, PWHL, USA Hockey |
Stack: SvelteKit 3 on Vercel · Turso (libSQL with vector search) · Gemini embeddings and answers · Redis · Tailwind + shadcn-svelte
More detail: project_mgmt/: PRD, technical spec, design spec, build plan, security plan, evaluations, and adding a sport or league.
Needs Node 22 or 24.
npm install
cp .env.example .env # then fill in the values; .env is gitignored
npm run dev
| Variable | Needed for |
|---|---|
GEMINI_API_KEY | Everything (from https://aistudio.google.com/apikey) |
TURSO_DATABASE_URL | Everything (file:local.db locally, libsql://… for Turso Cloud) |
TURSO_AUTH_TOKEN | Turso Cloud |
REDIS_URL (or KV_REST_API_URL + KV_REST_API_TOKEN for Upstash) | Question log and daily limits (required in production) |
RATE_LIMIT_SECRET | Daily limits (required in production; openssl rand -hex 32) |
The daily question limits are off in local development.
Rulebook PDFs are copyrighted, so they live in data/, which is gitignored and never committed.
data/<sport>/npx tsx scripts/dump-pdf.ts data/<sport>/<file>.pdf > dump.txtsrc/lib/ingest/sources.ts (and a parser in src/lib/ingest/ if the layout is new)npm run ingest -- <source-id> --dry-runnpm run snapshot -- comparenpm run ingest -- <source-id>npm run evalThe full guide, including display settings and colors, is project_mgmt/ADDING_A_SPORT.md.
| Command | What it does |
|---|---|
npm run dev | Local dev server |
npm run check | Type check |
npm test | Unit tests |
npm run ingest -- <id> [--dry-run] | Parse, embed and store a rulebook |
npm run snapshot -- save|compare [id...] | Parser regression check (no API keys needed) |
npm run ask -- <sport> <league> "<question>" | Ask from the terminal; shows retrieved rules and distances |
npm run eval [-- --page <sport/league>] | Run the labeled eval questions; see EVALS.md |
npm run logs [-- 50] | Recent questions from the Redis log |
npm run db:check | Check the Turso connection and vector support |
Push to main; Vercel builds and deploys. Set the environment variables above in Vercel (production can use a read-only Turso token). See project_mgmt/SECURITY_PLAN.md for the launch checklist.