Pilatesco — the balance is the state, a booking is what moves it
A customer buys a package and it sits on their own record rather than in a ledger kept beside it. Writing a booking into the calendar takes one session right off that package, and where the process stands is read from what is left. A cancellation, a no-show and a completed session each move the balance differently, and which of them gives the right back is written into a rule beforehand. The sale happens once while use spreads over weeks, and because both meet on one record, rights paid for but not yet taken stay visible. The system runs on Laravel and MySQL.
Read the case study →