Inspiration
Every budgeting app I tried made the same demands: connect your bank account, create a profile, hand over your data, and pay a subscription for the privilege. For something as personal as money, that felt backwards. I also noticed that automated apps do the math for you but teach you nothing. You end up with a dashboard you don't understand.
I wanted the opposite: a tool that is private by design, free to use, and educational at its core. Something that helps you build intuition about your own finances instead of outsourcing it. That idea became Personal Budget Tool, a local-first budgeting and projection app that runs entirely in your browser.
What it does
You enter your income and expenses, and the app immediately shows where your money goes each month. From there, it projects your financial trajectory forward, so you can see the long-term effect of small changes today. Cut a $60 subscription and you can watch the difference compound over six months, a year, five years.
Everything happens on your device. There are no accounts, no servers storing your data, no sync, and no tracking. Close the tab and your data stays with you.
How I built it
The app is a single-page web application deployed on Vercel. Because it is local-first, there is no backend at all: all state lives in the browser and persists locally on the device. That constraint simplified the architecture and made the privacy promise easy to keep, since there is literally nowhere for your data to go.
The projection engine is simple but honest math. Monthly savings are just income minus expenses:
$$s = I - E$$
And the projected balance after $n$ months, with an optional monthly growth rate $r$ (for savings interest or investment assumptions), follows the future value formula:
$$B_n = B_0 (1 + r)^n + s \cdot \frac{(1 + r)^n - 1}{r}$$
When $r = 0$, this collapses to the intuitive version anyone can verify by hand:
$$B_n = B_0 + s \cdot n$$
Showing the formulas alongside the results was a deliberate choice. The goal is that users understand the projection, not just see it.
Challenges I ran into
Local-first tradeoffs. With no backend, there is no "forgot password" safety net and no cross-device sync. I had to think carefully about how to persist data reliably in the browser and how to communicate to users that their data lives on their device.
Making projections honest. Financial projections can easily mislead. Compounding assumptions, inflation, and irregular expenses all complicate the picture. I chose to keep the model simple and transparent rather than pretend to more precision than the inputs justify.
Simplicity as a feature. The hardest design work was deciding what to leave out. Every feature I cut (bank syncing, categories with machine learning, notifications) made the tool faster to use and easier to trust.
What I learned
Building this taught me that privacy and simplicity reinforce each other. Removing the backend removed entire categories of risk, cost, and complexity at once. I also learned that showing your work matters: users trust a projection more when they can see and verify the math behind it. Finally, I got hands-on experience with local-first architecture and the UX patterns it requires, like clear messaging about where data lives.
What's next
Ideas on the roadmap include optional data export and import so users can back up or move their budgets, scenario comparison so you can view two futures side by side, and more educational content woven into the interface, like inline explanations of savings rate and compounding.
Built With
- codex
- github
- vercel
Log in or sign up for Devpost to join the conversation.