Loyalty Point System
A point engine that treats earning, spending, granting and refunds as one ledger
- Period
- 2025.11 – Ongoing
- Progress
- 75%
Overview
A point system an online store calls at checkout. Earning, spending, granting and refunds all land in one ledger, and admins see points, sales, members and branches together in a dashboard.
Every transaction is kept as a row in one of seven kinds — spend, earn, refund, cancel, no-earn, cash and distribution. A single purchase does not stop at the buyer: it cascades to the referrer, the influencer and the system, at rates set per branch. Received points mature before they can be spent, deductions follow a fixed order, and shipping fees are consumed first. Granting points takes a request and then an email approval from the person responsible; unapproved requests expire. Admins work through history overall and per branch, manage members, admins and influencers, adjust point settings, and export to Excel.
Live. Improvements land as they are requested.
Stack
| Area | Technology | Why we chose it |
|---|---|---|
| Backend | Java 17 · Spring Boot 3.4 · JPA | For a ledger, transaction boundaries are everything — the cascade had to close in one. |
| Frontend | React 18 — separate admin and member apps | Admins and members look at entirely different things, so the apps are separate. |
| Data | MySQL 8 · Redis | It handles money and balances, so a relational store is the premise. |
| Integration | Apache POI · email approval | Admins reconcile in Excel and approve grants by email — that is how the work already ran. |
Roadmap
Ledger design
Done2025.11.01 – 2025.12.15Transaction kinds, deduction order, maturation rules
Storefront integration
Done2025.12.16 – 2026.02.10Checkout-time earn/spend API with audit records
Admin dashboard
Done2026.02.11 – 2026.03.31Per-branch history, settings, Excel export
Operation
In progress2026.04.01 – OngoingLive. Improvements land as they are requested