這是一個可安裝的訓練紀錄 PWA。可記錄每個動作、每組重量與次數,以及降重後的重量與補次數;按「複製給 Codex」即可把摘要貼回對話。
未登入或離線時,資料先儲存在目前裝置的 localStorage。設定 Supabase 並以同一個 Email 登入後,手機與電腦會同步同一份紀錄。
- 從部署後的 HTTPS 網址開啟 App。
- 選擇訓練日,新增動作與組數。
- 在有降重補次數的組別勾選「降重」,填寫後續重量與次數。
- 手機與電腦使用相同 Discord 帳號登入;Email Magic Link 可作為備援。
- 按「儲存紀錄」保存,或按「複製給 Codex」把此次訓練回傳分析。
- 建立一個 Supabase 專案。
- 在 Supabase SQL Editor 執行
supabase-setup.sql。這會建立workouts表,並開啟只允許登入者讀寫自己資料的 RLS 規則。 - 從 Supabase Dashboard 的 Project Settings -> API 複製 Project URL 與 publishable key。
- 把兩個值填入
config.js。只可使用 publishable key 或舊版 anon key,禁止使用service_rolekey。 - 在 Authentication -> URL Configuration,把部署後的 HTTPS 網址設為 Site URL,並加入 Redirect URLs。
-
在 Discord Developer Portal 建立 Application。
-
到 OAuth2 -> Redirects 加入:
https://oowhhopmyjagcrlmeojg.supabase.co/auth/v1/callback -
從 Discord Application 複製 Client ID 與 Client Secret。
-
到 Supabase Authentication -> Sign In / Providers -> Discord,開啟 Discord provider,填入 Client ID 與 Client Secret後儲存。
Discord provider 啟用後,重新整理 App 就會顯示 Discord 登入按鈕。Client Secret 只可放在 Supabase Dashboard,不可寫入 config.js、GitHub 或任何前端檔案。若先前用 Email 建立過資料,Discord 帳號的 Email 不同時會被視為另一位使用者,兩邊的訓練紀錄不會自動合併。
必須部署到 HTTPS 網址,Magic Link、Service Worker 與跨裝置使用才會正常。可使用 GitHub Pages、Cloudflare Pages 或 Netlify。
部署完成後:
- Android Chrome:開啟網站後選擇「安裝應用程式」。
- iPhone:用瀏覽器的分享選單選擇「加入主畫面」。
- 電腦 Chrome 或 Edge:使用網址列右側的安裝圖示。
本機預覽可在此資料夾執行:
python -m http.server 4173再開啟 http://localhost:4173。本機預覽可以測試 PWA,但 Magic Link 正式設定應使用部署後的 HTTPS 網址。
未完成雲端同步前,清除瀏覽器網站資料會刪除本機紀錄。登入後的資料由 RLS 依 Supabase 使用者 ID 隔離;本機快取本身沒有額外加密,不適合共用裝置。