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.