自行掌控資料的運動紀錄器:離線優先、可安裝的 PWA,用於建立訓練計畫、記錄組數,並匯出 CSV/JSON。零相依,零建置步驟,資料保留在您的裝置上。
AI 翻譯
Own-your-data workout logger: an offline-first, installable PWA to build routines, log sets, and export CSV/JSON. Zero dependencies, zero build step, data stays on your device.
健康JavaScript · CSSGitHub @delharp231上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A workout logger you own and run from your phone. Build routines, log sets and
cardio at the gym, export clean data when you want to review it. No accounts,
no ads, no subscription — and your training data never leaves the device.
It's a zero-build, zero-dependency Progressive Web App: plain HTML/CSS/JS,
installed to your home screen, storing everything in IndexedDB on the phone.
The only thing hosted anywhere is the app's code (static files); nobody but
you ever sees a single set you logged. See SPEC.md for the full design and
GATES.md for the QA checklist.檢視完整 README ↗A workout logger you own and run from your phone. Build routines, log sets and cardio at the gym, export clean data when you want to review it. No accounts, no ads, no subscription — and your training data never leaves the device.
It's a zero-build, zero-dependency Progressive Web App: plain HTML/CSS/JS,
installed to your home screen, storing everything in IndexedDB on the phone.
The only thing hosted anywhere is the app's code (static files); nobody but
you ever sees a single set you logged. See SPEC.md for the full design and
GATES.md for the QA checklist.
npm test
That's node --test under the hood — no install step, this repo has zero
dependencies. It covers the pure logic: formatting, the exercise catalog,
progression (last time, pre-fill, Up next), workout finish rules, the schema
and its v1 → v2 migration, the Cycle 1 seed, CSV/JSON export and import, and a
guard that every app file is cached for offline use.
Serve the folder with any static file server and open it in a browser. For example:
python -m http.server 5055
then visit http://localhost:5055. A service worker needs HTTPS or
localhost to register, so this is enough to test everything except real
offline behavior — for that, see the Pixel/PWA gates in GATES.md.
Note: the app's service worker serves files cache-first, so in a plain local
server it will keep running old code after you edit files. Either unregister
it (DevTools → Application → Service workers) and hard-reload after each
change, or serve the folder with a server that returns 404 for
/service-worker.js and sends Cache-Control: no-store.
Once the app is deployed (Vercel, over HTTPS — see vercel.json):
Everything you log lives in IndexedDB on the phone. There is no server copy. If Chrome's site data gets cleared, or the phone is lost or reset, that data is gone — there's no other copy anywhere.
The Backup screen's JSON export is the only backup. Get in the habit of exporting it regularly, and keep the file somewhere safe (cloud drive, email it to yourself, whatever you'll actually keep). A JSON backup re-imports losslessly, replacing or merging with what's on the device.
Use Export CSV separately when you want to review your training in a spreadsheet — it's one row per set (or cardio entry), plain and pivotable, but it's for reading, not for restoring the app's state. Treat JSON as the backup and CSV as the report.
Some updates change how data is stored (Phase 3 moves from schema v1 to v2). The app upgrades your data automatically in a single step: either the whole upgrade succeeds or nothing is changed, and if it ever fails you get a screen with a Download backup button. Still, download a JSON backup from the Backup tab before the new version is deployed — it's your only copy.
Once a phone has run a version that upgrades the data, don't roll the site back to an older build: the older code can't open the upgraded database and shows a blank screen. Fix forward instead — your data stays intact.
For development, tests/fixtures/load-v1-db.js recreates a v1 database in the
local preview (synthetic, or from a real v1 backup saved as
tests/fixtures/real-v1.json, which git ignores) so the upgrade can be tested
before it ships. See GATES.md → Upgrade.
Right now the exercise library ships with a small placeholder seed — enough
lifts and cardio modalities to use the app on day one. A later, separate
project will curate a real, evidence-backed exercise library from research
and output it as exercises.seed.json. The Backup screen already has the
import path for that file today (Import JSON… merges an exercise list
into your library by name, without touching or duplicating anything you've
already added or edited). That import is the entire connection between the
two projects — Phase 1 doesn't otherwise depend on Phase 2 existing.