Billzzz: Self-Hosted Personal Finance Manager
I used to juggle my personal finances across a hodgepodge of tools: spreadsheets for bills, mental math for variable expenses, and online calculators for debt payoff strategies. It was fragmented, time-consuming, and frankly, exhausting. I wanted something unified, simple, and most importantly, something I controlled. So I built Billzzz.
The Problem with Existing Solutions
Most personal finance apps fall into one of two camps: they’re either overly complex budgeting systems trying to do everything (and requiring you to link your bank accounts), or they’re single-purpose tools that don’t talk to each other. I didn’t want to give a third-party service access to my financial data, and I didn’t want to pay monthly subscriptions for basic finance tracking.
What I needed was a lightweight, self-hosted application that could:
- Track recurring bills and payment history
- Manage variable spending with smart budget cycles
- Help me strategize debt payoff with real projections
- Keep everything in one place, under my control
The Solution: Billzzz
Billzzz is a full-stack web application built to solve exactly these problems. It’s a unified personal finance manager with three core systems that work together seamlessly.
Bills Management
The bills system lets you track all your recurring expenses in one place. You can:
- Organize by category with custom colors and icons (utilities, subscriptions, insurance, etc.)
- Set flexible frequencies (weekly, biweekly, monthly, quarterly, yearly)
- Store payment links for quick access when bills are due
- Log payment history to track what you’ve paid and when
- Integrate payday schedules to see how bills align with your income
No more hunting through emails or checking multiple websites to remember what’s due when. Everything is searchable, filterable, and organized exactly how you need it.
Smart Spending Buckets
This is where Billzzz really shines. The buckets system handles variable expenses like groceries, gas, dining out, and entertainment with an intelligent balance carryover system.
Here’s how it works:
- Create spending buckets for different categories with monthly allocations
- Log transactions as you spend (vendor, amount, notes)
- Budget cycles auto-generate based on your payday schedule
- Balances carry forward: If you underspend, the surplus rolls over to the next cycle. If you overspend, the deficit carries forward too.
This approach gives you the flexibility of cash envelope budgeting without the rigidity. Some months you’ll spend less on groceries and more on gas, and the system adapts. You get historical cycle analysis to see spending patterns over time, which helps refine your budgets.
Debt Payoff Calculator
The debt calculator helps you strategize your way out of debt with real projections and strategy comparisons.
- Track multiple debts with interest rates, minimum payments, and current balances
- Compare payoff strategies: snowball (smallest balance first), avalanche (highest interest first), or custom priorities
- Visual timeline projections show when you’ll be debt-free under each strategy
- Integration with bills system ensures minimum payments are accounted for in your cash flow
Seeing the actual timelines and total interest paid side-by-side makes it easy to commit to a strategy and track your progress.
How It’s Built
I built Billzzz with a modern stack that prioritizes type safety and developer experience. The frontend uses SvelteKit 2 with Svelte 5. I particularly wanted to try out the new runes feature for reactivity, and it’s been excellent. TypeScript throughout means fewer runtime surprises, and Tailwind CSS keeps the styling simple and maintainable.
The backend is SQLite with Drizzle ORM, which gives you type-safe database operations without the overhead of a full database server. SQLite is perfect for self-hosted applications like this - it’s fast, reliable, and your entire financial database is just a single file you can back up however you want.
The data model is straightforward: three main systems (bills, buckets, debts) with normalized tables and foreign key constraints. When you log a payment, it’s recorded in payment history and linked to the bill. When you add a transaction to a bucket, it’s associated with the current cycle. Everything connects naturally.
Deployment is Docker-based, so you can run it on any platform that supports containers. Your data lives in a mounted volume, completely under your control.
Why This Matters
Since building Billzzz, I’ve gone from scattered finance tracking to having a complete picture of my financial situation in one interface. I know exactly what bills are coming up, how my variable spending is trending, and what my debt-free date looks like under different strategies.
The smart budget cycles have been particularly valuable. Instead of stressing about monthly budget resets, the carryover system smooths out the natural variability in expenses. Some months I spend $80 on gas, other months $150. The system handles it without manual adjustments.
Try It Out
The code is open source under the MIT License and available on GitHub. If you want to run your own instance, deployment instructions are in the repository.
I built this because I wanted complete control over my financial tracking without giving data to third parties or paying subscriptions. If you’re in the same boat, maybe you’ll find it useful too.