LINE LIFF Reward Points
當時想製作集點卡所以就開始寫了
codex是後續寫MD才使用的~(真好用)
Github:https://github.com/firekilin/LineLiffRewardPoints
一套以 LINE LIFF 為入口的電子集點卡系統,支援建立卡片、發點、收點、轉送、兌換與協作者管理。

專案現況
| 項目 | 說明 |
|---|---|
| 後端 | Node.js、Express 4、EJS |
| 前端 | jQuery、Bootstrap 5、Canvas |
| 身分驗證 | LINE LIFF access token → LINE Profile API → server session |
| 資料庫 | MySQL(schema:reward_point) |
| 圖片 | 背景、印章、兌換圖存於 MySQL BLOB |
| QR Code | 加入協作者、發點、轉送與兌換 |
| 測試 | 尚未建立自動化測試 |
使用者與角色
| 角色 | 主要能力 |
|---|---|
| 集點卡建立者 | 建立/刪除卡片、邀請協作者、發點、查閱全部發點紀錄、核銷兌換 |
| 發點協作者 | 查看被授權的卡片、發點、查看自己的操作紀錄 |
| 集點會員 | 領點、查看卡片與明細、轉送點數、提出兌換 |
核心流程
https://viewscreen.githubusercontent.com/markdown/mermaid?docs_host=https%3A%2F%2Fdocs.github.com&color_mode=light#b31122a2-119b-439b-91a1-5284b5252286
系統架構
https://viewscreen.githubusercontent.com/markdown/mermaid?docs_host=https%3A%2F%2Fdocs.github.com&color_mode=light#f0059e2c-ed41-4ab0-bf85-e3fd46265635
文件導覽
目前最重要的決策
- 點數是否採「事件帳本」模型:目前餘額由多筆
point事件即時計算,應正式定義狀態機與不可變更原則。 - QR Code 是否需要到期時間、單次領取與防重放:現況
pointExp未實際檢查。 - 刪除卡片是否允許實體刪除:現況會依序刪除四張表,失敗時可能留下不一致資料。
- 圖片是否繼續放 MySQL BLOB:會影響 DB 備份、效能與容量管理。
- 權限模型是否區分建立者與協作者:部分 API 已檢查,部分查詢條件仍需收斂。
啟動前置條件
- 準備 MySQL schema
reward_point。 - 依 DB 規格 建立資料表。
- 由
config/sample.json建立環境設定,填入 DB 與 LINE LIFF 資訊。 - 安裝套件後執行
npm start。
安全提醒:正式環境不應沿用程式內的 session/cookie 範例密鑰;請改由秘密管理或環境變數注入。
