Skip to content

MusicTW/training-log

Repository files navigation

訓練紀錄

這是一個可安裝的訓練紀錄 PWA。可記錄每個動作、每組重量與次數,以及降重後的重量與補次數;按「複製給 Codex」即可把摘要貼回對話。

未登入或離線時,資料先儲存在目前裝置的 localStorage。設定 Supabase 並以同一個 Email 登入後,手機與電腦會同步同一份紀錄。

使用方式

  1. 從部署後的 HTTPS 網址開啟 App。
  2. 選擇訓練日,新增動作與組數。
  3. 在有降重補次數的組別勾選「降重」,填寫後續重量與次數。
  4. 手機與電腦使用相同 Discord 帳號登入;Email Magic Link 可作為備援。
  5. 按「儲存紀錄」保存,或按「複製給 Codex」把此次訓練回傳分析。

雲端設定

  1. 建立一個 Supabase 專案。
  2. 在 Supabase SQL Editor 執行 supabase-setup.sql。這會建立 workouts 表,並開啟只允許登入者讀寫自己資料的 RLS 規則。
  3. 從 Supabase Dashboard 的 Project Settings -> API 複製 Project URL 與 publishable key。
  4. 把兩個值填入 config.js。只可使用 publishable key 或舊版 anon key,禁止使用 service_role key。
  5. 在 Authentication -> URL Configuration,把部署後的 HTTPS 網址設為 Site URL,並加入 Redirect URLs。

Discord 登入

  1. 在 Discord Developer Portal 建立 Application。

  2. 到 OAuth2 -> Redirects 加入:

    https://oowhhopmyjagcrlmeojg.supabase.co/auth/v1/callback
    
  3. 從 Discord Application 複製 Client ID 與 Client Secret。

  4. 到 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 隔離;本機快取本身沒有額外加密,不適合共用裝置。

About

Installable workout tracking PWA with secure cross-device sync

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors