Building FinanceOS: A Free, Privacy-First Personal Finance App
I built FinanceOS because I kept running into the same problem: people who genuinely needed a proper budgeting tool couldn't justify paying for one. YNAB, Monarch Money, PocketSmith — great products, but paying monthly for basic financial clarity shouldn't be a barrier.
The question I started with: can I build something genuinely capable that costs the user absolutely nothing, and never will?
FinanceOS is the answer. It's available at financeos.artwiz-fj.com — free to use, free forever, and every dollar you track stays on your own device.
The privacy decision that shaped everything
The most important design decision came before writing a single line of code: no server-side financial data storage.
Most free apps make money by collecting your data. Your spending habits, income, categories, account balances — that's valuable information, and I didn't want to be in that business.
All financial data in FinanceOS is stored in the browser's localStorage under a per-user key (fos_data_[userId]). When you add a transaction, it saves to your own device. When you close the tab, it's still there. When you clear your browser data, it's gone — because you cleared it. Nothing is transmitted to any FinanceOS server. Your financial life stays entirely yours.
What FinanceOS can do
The app is built around 8 integrated modules:
Dashboard — a live overview of your financial position: account balances, income vs. expenses for the month, spending by category, and recent transactions all in one place.
Smart Transaction Tracking — log every income and expense with 16 built-in colour-coded categories, notes, and dates. Split a single purchase across multiple categories, search and filter your full history, and import or export via CSV.
Recurring Transactions — set up rent, salary, subscriptions, and any regular payment once. FinanceOS generates each occurrence automatically on daily, weekly, bi-weekly, monthly, or yearly schedules, with pending instances you review before they count.
Budget Planner — set monthly spending limits per category and see a real-time progress bar showing exactly how much you've used before you overspend.
Accounts & Wallets — track checking, savings, credit cards, and cash separately, with balances computed live from transaction history and one-tap transfers between accounts.
Savings Goals — create goals with target amounts and deadlines, watch progress on animated rings, and get told exactly how much you need to save each month to hit your target.
Loan Calculator — calculate mortgage, auto, personal, and student loans with a full month-by-month amortisation table. See the true cost of borrowing and how extra payments save thousands in interest.
Reports & Analytics — interactive cash flow charts with a net savings trend line, category breakdown donut charts, 30-day daily spending trends, and flexible period filtering.
The stack
FinanceOS is built with vanilla HTML, CSS, and JavaScript — no framework, no build step, no node_modules in production.
- Vanilla JS — all application logic, routing, state management, and rendering across three files:
landing.js(marketing site),auth.js(local account system), andapp.js(the full finance platform). - Local authentication — accounts are created and stored locally. Passwords are hashed using SHA-256 with a cryptographic salt and never stored in plain text. No server is involved in the login flow.
- localStorage — all financial data serialised to JSON and stored per-user (
fos_data_[userId]). Session state tracked viafos_session_v1. - Chart.js — loaded from CDN for dashboard charts, category donuts, and the cash flow reports view.
- PWA — FinanceOS ships as a Progressive Web App with a service worker and
manifest.json. On iOS, add to Home Screen. On Android or desktop, install directly from the browser. The app works fully offline once installed.
Why no framework?
I've built with Next.js and React. For FinanceOS, a framework would have been the wrong choice.
A framework adds build complexity, dependency chains, and bundle overhead. For a tool that stores everything locally with no server, those trade-offs don't pay off. Three well-structured JavaScript files that manage their own state are easier to reason about, load faster, and have no version deprecation risk.
The constraint of "no build step" also makes the app trivially deployable. The entire thing is an HTML file, a CSS file, and JavaScript. Deploy it anywhere.
Multi-currency support
FinanceOS defaults to FJD (Fijian Dollar) and supports 10 currencies including USD, EUR, GBP, AUD, JPY, CAD, and more. Currency is set once in Settings and applied instantly across all views.
What's coming: FinanceOS Pro
The current version is designed for personal use. The browser-only architecture is ideal for privacy but has limits: your data doesn't follow you across devices, you can't share budgets with a partner, and there's no automated bank transaction import.
FinanceOS Pro is in development. Planned features include:
- Bank account sync — automatic transaction import, categorised on arrival
- AI-powered insights — personalised spending analysis and smart forecasts
- Cloud sync & multi-device — your data available across phone, tablet, and desktop in real time
- Family & shared budgets — collaborative budgets with individual spending privacy
- Native apps — dedicated apps for Android, iOS, Windows, and macOS
- Advanced reporting & tax tools — exportable tax-ready reports and custom report builders
Pro will be a paid subscription. The free personal version will remain exactly as it is — no features removed, no paywalls, no expiry.
Try it
No credit card. No bank connection needed. Installs on any device. Works offline.
If you have feedback or want to talk about the Pro version for your business, get in touch.
Share this article