BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2,或任何藍牙控制器搭配 MyWhoosh、Rouvy、Zwift 等。可於 iOS、Android、Windows 與 macOS 免費試用。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A real-time widget for Notion (or any embeddable page) showing matches, standings, position history, and recent form for a football club you pick from a dropdown — any club across 9 domestic leagues in 8 countries, via football-data.org.
1. Get the project on your PC, then from inside the folder:
(see "API Key & Security" below for how to get one)
3. Start the server:
Your server is now running at http://localhost:3000.
4. Open the widget — visit http://localhost:3000/widget, or open widget.html directly in your browser.
Pick one, then point widget.html's backendUrl constant at it.檢視完整 README ↗A real-time widget for Notion (or any embeddable page) showing matches, standings, position history, and recent form for a football club you pick from a dropdown — any club across 9 domestic leagues in 8 countries, via football-data.org.
| File | Purpose |
|---|---|
server.js | Backend Node.js server — proxies API calls, hides your API key |
widget.html | Frontend Notion widget — self-contained, no build step |
package.json | Node.js dependencies |
.env.example | Environment variables template |
npm install
.env file:
cp .env.example .env
Then edit it:
PORT=3000
API_KEY=your_football_data_org_api_key_here
(see "API Key & Security" below for how to get one)npm start
# or, with auto-reload during development:
npm run dev
Your server is now running at http://localhost:3000.http://localhost:3000/widget, or open widget.html directly in your browser.Pick one, then point widget.html's backendUrl constant at it.
http://localhost:3000const backendUrl = 'http://localhost:3000'; in widget.htmlhttps://your-replit-name.replit.dev)const backendUrl = 'https://your-replit-name.replit.dev'; in widget.htmlAPI_KEY (see "API Key & Security" below)backendUrl in widget.html, then push to redeployVercel serves the widget page itself too, at <your-vercel-url>/widget — so this is the only option here where you don't need to separately host the frontend. See "Using the Widget" below for embedding that URL directly in Notion instead of copy-pasting HTML.
backendUrl in widget.htmlLocally: start the server (npm start), open the widget, and pick a country then a club from the dropdowns.
In Notion, pick one:
<your-vercel-url>/widget. Notion loads it in an iframe — nothing to copy or re-paste after future changes, since it always reflects whatever's currently deployed.backendUrl in widget.html to your deployed backend's URLwidget.html fileEither way: pick a club — your choice is remembered in that browser for next time, and the selector hides itself automatically after that (click "Change club" to bring it back)
.env file (see .env.example) — it's read only on the backend and never sent to the browser.env is gitignored — never commit it or share it publiclylocalStorage); the country/club dropdowns can be hidden once you've picked a club (they default to hidden after that) and reopened anytime via the "Change club" linkThe exact roster depends on football-data.org's current season data (promotions, relegations, name changes will shift this over time) — this is what's selectable today. Any of these clubs that's also in the Champions League this season gets the extra Champions League section automatically.
| Problem | Fix |
|---|---|
| "Cannot GET /" | Backend isn't running — run npm start |
| "Failed to fetch" / "Could not reach the backend" | Check backendUrl in widget.html; make sure the backend is running; check the browser console for errors |
| Port already in use | Change PORT in .env, or stop whatever else is using it |
| Data not updating, or the dropdowns stay empty | Check your API key in .env; verify your internet connection; check the browser console |
| Occasional "Failed to fetch" while switching clubs quickly | Expected — the free football-data.org tier allows only 10 requests/minute. Wait a few seconds and try again |
Still stuck? Open the browser console (F12) for detailed error messages.