Explain My Money
Guidance, not a dashboard.
Most budgeting apps answer a question nobody asked. The one people actually have is simpler: am I spending my money well this month?
Explain My Money is a mobile-first finance app built on the 50/30/20 rule. Income splits into needs, wants and savings, the split is adjustable, and the app steers toward paying down high-APR debt and building an emergency fund before anything else.

The product
One view of whether you’re on track.
It is built for people in survival mode, so the job is not tracking. It is showing where you are in a sequence and what the next move is: clear the high-interest debt, build the safety net, then start investing.
Recurring expense detection separates money already committed from money already spent, which is where most budgeting surprises come from. Colour-coded feedback and contextual prompts turn the month into something you act on rather than a report you read.

Key features
Six decisions the app makes easier.
- Stack
- Next.js 16, TypeScript, Supabase, Tailwind v4, Recharts
- Tests
- Vitest unit, Playwright end to end
- Status
- In active development, v2
- 01Guided financial systemthe 50/30/20 framework shows where the money is going against where it should go.
- 02Goal-oriented progressionhigh-interest debt, then emergency savings, then investing, with your position in that sequence always visible.
- 03Debt prioritisationdebts surface ranked by interest rate, so the fastest payoff is the obvious one.
- 04Committed versus actual spendingupcoming recurring expenses are held apart from money already spent.
- 05Contextual promptsthe next step is explained where the decision is made, not in a help page.
- 06Colour-coded feedbackon track, at risk, or needs attention, readable at a glance.
Tech choices
No API layer. Row-level security instead.
The front end talks to Supabase directly and every isolation rule between users lives in Postgres policies rather than in application code. That removes a whole backend from the project, and it puts the guarantee in the one place a UI bug cannot get around.
It was built with agentic tooling throughout: Claude, Codex and Cursor against a Supabase backend. That is the other thing this project is evidence of, which is how quickly a designer who codes can get a real product in front of real users.