build · Oct 2026
Frizzy Store System
Solo build: data model, point of sale, cash engine, and interface
- Next.js
- TypeScript
- Tailwind
- Zustand
- Recharts
Summary
A store system for a phone counter: sales, stock and cash in one place. On top of the usual point of sale sits a Cash Recovery Engine, which reads the same numbers and answers the question the owner actually has, which is how long the cash lasts and what to spend it on. The sales are real, taken from an export of the counter's WhatsApp sales chat.
Problem
A phone counter runs on cash and stock that turn over quickly, and a cashier app answers the wrong question. It reports today's takings but not how fast the cash is burning, where it is leaking, or how much stock it is safe to buy next week. Those answers are already in the data, but not in a form anyone reads.
Approach
Sales come from the real records, extracted row by row from the shop's WhatsApp sales group. Stock is an append-only ledger, so a sale never overwrites a stock figure, it writes a new line. Money is always integer rupiah, never a float. The Cash Recovery Engine is built on top: True Burn, runway, a Leak Detector, reorder suggestions, open-to-buy, a What-If slider and a playbook. Two roles differ in what they can see, so as staff the cost prices and the profit disappear and a sensitive action asks for the owner's PIN.
Outcome
Nineteen pages, a point of sale with IMEI selection, a margin guard, layered discounts and mixed payments, a catalogue of 24 reports with CSV export, shift and cash reconciliation, and an AI analyst that computes its answers with tools instead of letting the model guess.
Honest limitations
The supporting records the chat export does not contain, such as stock, cash, overheads and shifts, are generated deterministically so every feature can be exercised. The app is not deployed, so the repository is the whole of it, and a real deployment would replace the generated data with the counter's own.
Detail
- The cash engine
- True Burn and runway estimate how long the cash lasts, the Leak Detector points at where it goes, and open-to-buy sets a safe purchasing ceiling. A What-If slider re-runs the forecast against a change before it is made.
- Tested in a real browser
- An end-to-end script drives the running app through the DevTools protocol: it adds a product, completes a payment, rejects a wrong PIN, approves with the owner's PIN, moves the What-If slider, switches theme and opens every page. The last run passed 34 checks with none failing.
- Why a ledger
- Stock as an append-only ledger means a correction is another entry, so the history of a number is never lost. Every stock change also writes an audit line.
Gallery

Next project
she aint allat