手機優先的個人記帳 PWA:多用戶、離線可用、資金錢包分離,前端純 ES Modules、不需要建構步驟。
- 離線也能記帳:可安裝到手機/桌面,離線新增的記錄與照片會排隊,回連後自動同步
- 資金錢包:多個錢包、銀行/現金雙維度、受限資金(代收代付)、內部轉移,並可看資金流向樹
- 記一筆很快:計算機式鍵盤、兩層分類、拍照或選圖附件(自動壓縮)
- 看得懂的統計:分類佔比、收支趨勢、環比分析、月度預算,定期收支一鍵套用
- 電腦版儀表板:KPI 卡與功能卡可自由釘選
- 多用戶資料隔離:每個人只看得到自己的資料;註冊可設為邀請制或關閉
- 帳號安全:JWT、登入失敗鎖定、改密碼後舊裝置立即登出、前端 CSP
- 資料帶得走:匯出 CSV/Excel/JSON,JSON 備份可匯入還原
- 簡單部署:Docker Compose + nginx,前端無 bundler、無 build step
需要 Python 3.8+、Docker(跑 MongoDB)。
# 1. MongoDB
docker run -d -p 27017:27017 --name mongo mongo:7.0
# 2. 後端(專案根目錄)
cd backend
cp .env.example .env # 填入 MONGO_URI 和 JWT_SECRET(本機用任意字串即可)
pip install -r requirements.txt
python main.py # http://localhost:5001
# 3. 前端(另開終端機,回到專案根目錄)
python -m http.server 8080 --directory frontend/v2 # http://localhost:8080.env 最小設定:
MONGO_URI=mongodb://localhost:27017/
JWT_SECRET=any-local-secret
跑測試:
pip install -r backend/requirements-dev.txt
TESTING=true pytest backend/tests/完整的環境變數、前端設定、測試與部署說明見 docs/SETUP.md。
- 註冊預設是開放的:沒設
REGISTRATION_MODE就是open,知道網址的人都能註冊。正式環境請設invite(需一次性邀請碼,用backend/manage_invites.py管理)或closed。 - 正式環境是手動部署:沒有任何 CI/CD 自動部署,GitHub Actions 只跑測試。合併後要自己 SSH 進 NAS 重建容器,見
docs/DEPLOY_TWO_ENV.md。 - 改了前端要升版號:
frontend/v2/service-worker.js的CACHE_NAME與frontend/v2/js/version.js的APP_VERSION要一起改,否則使用者端快取不會更新。 - 後端測試一定要設
TESTING=true:沒設會連到真實 MongoDB,測試資料會污染正式資料庫。 - 前端用別的 port 時,要把那個網址加進後端
.env的FRONTEND_URLS,並重啟後端,否則 CORS 會擋。Windows 上 8080 常被其他軟體佔用。 TRUSTED_PROXY_COUNT:限速與登入鎖定依客戶端 IP 計算。只有一層代理用預設1;代理前面還有另一層才改2,設錯會讓限速失準。JWT_SECRET與.env:.env不可提交到 Git;更換JWT_SECRET會讓所有人被登出。- 不要寫死後端網址:前端由
resolveBackendUrl()(frontend/v2/js/config.js)依執行環境自動判斷。
| 想知道 | 看這裡 |
|---|---|
| 完整安裝、環境變數、部署、安全建議 | docs/SETUP.md |
| 完整功能清單 | docs/FEATURES.md |
| API 範例(請求/回應)/端點速查 | docs/API.md、docs/API_ENDPOINTS.md |
| 資料庫結構 | docs/DATABASE.md |
| NAS 雙環境部署手冊 | docs/DEPLOY_TWO_ENV.md |
| 開發指南、提交規範 | docs/DEVELOPMENT.md |
| 現行藍圖與開發順序 | docs/ROADMAP_v2.md(舊版 ROADMAP.md 僅作歷史參考) |
| 版本更新日誌 | CHANGELOG.md |
| PWA 安裝與離線、前端更新清單 | frontend/PWA-README.md、frontend/UPDATE_CHECKLIST.md |
| 密碼規則 | backend/PASSWORD_POLICY.md |
| 測試(後端/E2E/前端) | backend/tests/README.md、docs/E2E_TESTING_GUIDE.md、docs/FRONTEND_TESTING.md、docs/TESTING_BEST_PRACTICES.md |
| 欠款與記帳整合規格 | docs/DEBT_ACCOUNTING_INTEGRATION.md |
後端 Flask + MongoDB;前端純 ES Modules(無框架、無 bundler)的 PWA;Docker Compose + nginx 自架部署。
MIT License