Case study · Web + iPhone · My own product

My own. I get paid fortnightly and every budgeting app thought in months. The one number I needed — what’s left after everything committed, before next payday — was never on screen.

Decisions that mattered · 01

  • Put the remaining number first. Every screen answers “what’s left?” before anything else. Spending history is secondary.
  • Import, don’t connect. No bank-login integration. You export a statement and import it. Slower for the user, but it means Budgeteer never holds banking credentials — and it removed an entire category of security risk and compliance cost.
  • Web first, then native. The web app proved the model. The iPhone app was built once the data model had settled — native SwiftUI, sharing the same API, not a wrapped website.
  • Free core, paid extras. The budget is free forever. Reports, tax summary and receipt scanning are the subscription. The iPhone app respects App Store guideline 3.1.1: subscribed features show for subscribers, a locked panel for everyone else, no outward purchase link.

Stack

PHP 8 backend, MySQL, a custom ‘Ghost Ledger’ design system (CSS tokens, vanilla JS, no framework) on the web. Swift and SwiftUI for the iPhone and iPad app, targeting iOS 26 with Liquid Glass. PHPUnit for the API. GitHub Actions deploy.

Outcome

Live at thebudgeteer.app. iPhone app submitted to the App Store, September 2026.

Screens · 02

Next step

Got something to build?

Tell me what you're trying to do and I'll tell you honestly whether I'm the right person for it — and if not, who might be.

Start a conversation

Canberra-based · working with clients across Australia · replies within one business day