BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
Open-source, local-first training platform: calendar, AI assistant, Garmin & WHOOP sync — plus a TypeScript SDK, CLI, and MCP server for FIT, TCX, ZWO, and Garmin Connect workout files.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Kaiord — Open-Source Health & Fitness Data Framework
Kaiord is an open-source framework for creating, converting, and managing health & fitness data.查看完整 README ↗kaiord.com | Editor | npm
Kaiord is an open-source framework for creating, converting, and managing health & fitness data.
It provides:
@kaiord/core: a TypeScript library with format adapters for .fit, .tcx, .zwo, and .krd (Kaiord) files, plus Garmin Connect API integration.@kaiord/cli: a command-line tool to convert, validate, and compare files across formats.@kaiord/mcp: an MCP server exposing Kaiord tools to AI agents (Claude Desktop, Claude Code, etc.). Published in the official MCP registry as io.github.pablo-albaladejo/kaiord..krd (Kaiord Representation Definition)training_peaks_tss duration type is not yet implemented in the FIT converter. This is a TrainingPeaks-specific metric that requires additional mapping logic. Contributions welcome!Kaiord is local-first: your data lives on your device, because there is no Kaiord server to send it to. There are no accounts and no backend.
new KaiordDatabase() in dexie-database.ts), and the UI reads it reactively through useLiveQuery. Nothing is written to a remote database — see the "Persisted data → Dexie" rule in State Management.import-workout-formats.ts, export-workout-formats.ts) or locally in the @kaiord/cli. Files never leave your device to be converted.drive.appdata scope, so synced data lands in your own Drive's app folder; the access token lives only in memory for the session and is never persisted by Kaiord.garmin-bridge, , ) that piggyback on your existing browser session. Per , a bridge "SHALL NOT store, transmit, or manage user credentials"; authentication is "delegated entirely to the browser's cookie jar." No third-party server proxies your credentials or your data.Comprehensive documentation is available in the /docs directory:
| Layer | Tooling |
|---|---|
| Core | TypeScript, tsdown, Zod |
| CLI | yargs |
| Web App | React, Zustand, Tailwind, Radix UI |
| Testing | Vitest, Playwright |
| Package manager | pnpm |
kaiord/
├─ packages/
│ ├─ core/ → domain types, schemas, ports & use cases
│ ├─ fit/ → Garmin FIT format adapter
│ ├─ tcx/ → Training Center XML adapter
│ ├─ zwo/ → Zwift ZWO format adapter
│ ├─ garmin/ → Garmin Connect API adapter
│ ├─ cli/ → command-line interface
│ ├─ mcp/ → MCP server for AI/LLM integration
│ └─ workout-spa-editor/ → web application (https://kaiord.com/app/)
├─ docs/ → documentation
├─ LICENSE
├─ README.md
└─ pnpm-workspace.yaml
Create and edit workouts visually in your browser. No installation required.
pnpm install
pnpm -r build
pnpm -r test
# Example usage
pnpm kaiord --help
For detailed installation instructions and usage examples, see the Getting Started Guide.
Kaiord uses GitHub Actions for continuous integration and deployment:
For complete CI/CD documentation, deployment guides, and npm publishing instructions, see Deployment.
Beyond linting, the repo enforces its architecture and conventions with 60+ purpose-built guard scripts under scripts/, each with its own co-located test suite. They run on every commit (husky pre-commit) and in CI (pnpm test:scripts), and cover, among others:
packages/core/src/ directory allowlist (check-architecture.mjs)@kaiord/* dependency must match the spec table (check-package-deps.mjs)should -prefixed titles and Arrange/Act/Assert structure on every test (check-test-title-should.mjs, check-test-aaa.mjs)check-no-pii-leakage.mjs)check-no-zustand-writethrough.mjs)check-spec-format.mjs, check-archive-*.mjs)If a rule matters here, a script enforces it — documentation describes the rules, but the guards are what make them true.
To contribute to Kaiord:
git checkout -b feature/my-featurepnpm exec changeset (for version-worthy changes)pnpm -r test and pnpm -r buildFor detailed contribution guidelines, development workflow, and code standards, see Contributing.
If you find Kaiord useful, consider supporting its development:
Your support helps maintain and improve Kaiord for the fitness community!
Built by Pablo Albaladejo
MIT © 2025 Pablo Albaladejo See LICENSE for details.
whoop-bridge