Financy: Zero-Based Budgeting App

Introduction
Financy is an open-source zero-based budgeting (ZBB) app for desktop and mobile — give every dollar a job. You assign every unit of money to a category until Ready to Assign hits zero, then watch your envelopes through the month.
Underneath, it's real double-entry accounting: every transaction is a set of balanced postings that sum to zero, so your budget, account balances, and net worth are all derived from a single journal and can never drift out of balance.
It's also radically local-first and private. Your data lives in a single .financy file you own — no cloud, no account, no tracking — and can optionally be protected with strong password encryption so even the file on disk is unreadable without your passphrase.
Why I Built It
Most budgeting apps are subscription SaaS products that hold your financial data hostage in someone else's cloud. I wanted the rigor of a proper envelope-budgeting tool (in the spirit of YNAB) with the ownership model of a plain file on my disk: open format, no account, no telemetry, and encryption strong enough that I could drop the file in a synced folder without worrying.
I also wanted to prove the accounting core properly — money handling is exactly the kind of domain where "close enough" isn't good enough.
Key Features
Zero-Based Budgeting
- Assign money per category each month until Ready to Assign reaches zero
- Track Assigned · Activity · Available per category, with envelope balances that roll forward and overspending shown in red
- One-tap quick-budget suggestions (last month's assigned/spent, 3-month average) and Auto-Assign to copy a month's plan
- An honest Ready-to-Assign: a single pool drawn from real on-budget account balances, so you can never assign money you don't have
- Locked history — past months are view-only; a budget you've already lived through can't be rewritten
Real Double-Entry Accounting
- Every transaction is balanced postings that sum to zero — budget, balances, and net worth are derived, never stored separately
- Amounts are stored as integer minor units (cents) with per-currency formatting for Rp · $ · € · £ — no floating-point money, ever
- Credit cards are budget-neutral the way a good ZBB tool should be: card spending depletes its envelope and nets against the budget
Debt Management
- BNPL/installment plans, amortizing loans (APR with proper principal-vs-interest splits, extra payments), revolving credit (limits, utilization, monthly statement review), and informal IOUs
- An overview dashboard with total owed, weighted average APR, projected debt-free date, and a snowball vs. avalanche payoff comparison
Privacy & Data Ownership
- Optional XChaCha20-Poly1305 encryption at rest with an Argon2id-derived key — tamper-evident, decrypted only in memory, no backdoor
- Each document is a self-contained SQLite file with ACID auto-save, atomic writes, append-only schema migrations, and an automatic
.bakbefore any upgrade
Accounts, Transactions & Analytics
- Asset & liability accounts, net-worth overview, and per-account registers with running balances
- A date-grouped journal with Income / Expense / Transfer entry, live filters, search, and bulk recategorization
- KPIs, income-vs-expenses, net-worth-over-time, and spending-by-category charts — all derived from the journal
Cross-Platform
- Native desktop app for Linux, Windows, and macOS, with
.deb/.rpmpackages and a registered.financyfile type - A touch-first Android UI (beta) built from the same codebase
Screenshots



Technology Stack
Core
- Go — application language; the accounting core lives in a
corepackage with zero UI dependencies, so all the money logic is independently testable - Fyne — cross-platform native GUI (desktop + Android from one codebase)
- modernc.org/sqlite — pure-Go SQLite, no cgo for the database
Security
- XChaCha20-Poly1305 — authenticated encryption at rest
- Argon2id — memory-hard key derivation from the user's passphrase
Engineering
- GitHub Actions — CI (build, vet, test) plus a scheduled
govulncheckpass - Makefile workflow —
make check, isolated dev profiles (make run-dev), automated screenshot generation, and tag-triggered release packaging for all three desktop platforms
Engineering Highlights
Two rules protect user data across the whole codebase:
- Migrations are append-only — schema history is never rewritten, and older files get an automatic backup before upgrading
- Money stays in integer minor units — floats are banned for monetary values
The strict separation between the UI and the double-entry core package means every piece of accounting logic — envelope math, amortization schedules, credit-card neutrality — is covered by plain Go tests without touching the GUI.
Roadmap
The core is feature-complete and heading toward a stable v1.0 (Linux as the supported install target, Windows/macOS unsigned at first). After 1.0, the plan is to grow Financy into an all-in-one finance app: a full investment tracker on the same double-entry journal, budget goals, multi-currency, an OFX/QFX importer, and an opt-in, self-hosted end-to-end-encrypted sync — never a Financy cloud account.
Links
- Website & Docs: raihanstark.github.io/financy
- Source Code: github.com/RaihanStark/financy
Financy is free, MIT-licensed, and built in my spare time — stars and GitHub sponsorships are hugely appreciated!