集點卡

LINE LIFF Reward Points

當時想製作集點卡所以就開始寫了

codex是後續寫MD才使用的~(真好用)

Github:https://github.com/firekilin/LineLiffRewardPoints

一套以 LINE LIFF 為入口的電子集點卡系統,支援建立卡片、發點、收點、轉送、兌換與協作者管理。

LINE LIFF Reward Points 集點卡

專案現況

項目說明
後端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

文件導覽

目前最重要的決策

  1. 點數是否採「事件帳本」模型:目前餘額由多筆 point 事件即時計算,應正式定義狀態機與不可變更原則。
  2. QR Code 是否需要到期時間、單次領取與防重放:現況 pointExp 未實際檢查。
  3. 刪除卡片是否允許實體刪除:現況會依序刪除四張表,失敗時可能留下不一致資料。
  4. 圖片是否繼續放 MySQL BLOB:會影響 DB 備份、效能與容量管理。
  5. 權限模型是否區分建立者與協作者:部分 API 已檢查,部分查詢條件仍需收斂。

啟動前置條件

  1. 準備 MySQL schema reward_point
  2. 依 DB 規格 建立資料表。
  3. 由 config/sample.json 建立環境設定,填入 DB 與 LINE LIFF 資訊。
  4. 安裝套件後執行 npm start

安全提醒:正式環境不應沿用程式內的 session/cookie 範例密鑰;請改由秘密管理或環境變數注入。