Inspiration

TillFlow was inspired by the everyday problem of small businesses tracking cash manually. A till can look balanced during a busy shift, but missed refunds, cash movements, underpayments, and expenses make it difficult to know what should actually be in the drawer at the end of the day.

What it does

TillFlow is a lightweight point-of-sale and daily till-reconciliation tool. It records checkout sales, expenses, refunds, and cash movements; calculates expected cash; supports multiple business days; and highlights possible cash underpayments before a day is closed.

How I built it

I built TillFlow as a frontend-only React application using Vite. All data is stored locally in the browser with localStorage, so the app works without a backend.

The key calculation is:

Expected cash = Opening cash + Cash received + Cash added − Refunds − Expenses − Cash removed

I also added Vitest tests for multi-day data separation, cash calculations, shortage warnings, warning dismissal, and local-storage persistence.

Challenges and what I learned

The biggest challenge was separating sales revenue from the cash physically received. For example, if an item costs £6 but only £5 is received, TillFlow now adds £5 to the expected till cash while still flagging the £1 underpayment for review at Close Day.

I also learned how important business-day logic is: the app cannot rely only on the computer’s date, because owners need to close one day and immediately start the next. This led to date-specific records, locked closed days, and carry-forward opening cash.

Finally, building the reconciliation flow showed me that a cash difference should not disappear when dismissed. TillFlow preserves the original record and keeps the audit trail visible for later review.

Built With

Share this project:

Updates

Submission history