Back to Blog
Finance PWA Single-File 2026

RafiFinance: Personal Finance Tracker

I built a complete personal finance app as a single HTML file, no server, no database, no framework. Just one file that runs anywhere and works offline.

Author
Muhammad Rafi Arsya
Published
June 2026
Stack
Vanilla JS · PWA · localStorage
Deployed at
finance.rafiarsya.com
RafiFinance
The Problem I Had

I kept losing track of my money. Not in a dramatic, "I'm broke" way, just the slow, quiet kind where you check your e-wallet at the end of the month and wonder where half of it went. RM50 here, RM30 there. It adds up.

I tried spreadsheets, too much friction to maintain. I tried finance apps, too many required accounts, sent data to servers I don't trust, or were locked behind subscriptions for features that should be basic. None of them worked the way I think about money.

So I did what developers do: I built my own. But I gave myself a hard constraint that changed everything about how I approached it.

The constraint I set for myself: it had to be a single HTML file. No npm install. No build step. No server. Download it once, open it in a browser, and it just works.

That constraint turned out to be the most interesting engineering challenge of the whole project.

The App
Dashboard — the screen I open most
Dashboard — the screen I open most
Adding a transaction
Adding a transaction
The financial health score
The financial health score
Spending over time
Spending over time
Category breakdown
Category breakdown
Budget targets
Budget targets
On the blog
This is the short version

The full write-up — architecture decisions, the parts that broke, and what I'd do differently — lives on ThoughtLog, my personal blog.

Read the full post on ThoughtLog