Your Personal Finance Companion
Take full control of your finances. Privacy-first, self-hosted money management
with smart categorization and AI-powered insights — your data never leaves your server.
Website • Features • Quick Start • Tech Stack • License
Zumfi is a full-stack, self-hosted personal finance application that helps you take complete control of your money. Upload bank statements, automatically categorize transactions, track your expenses, set budgets and savings goals, track your mortgage as well as your portfolio (stocks, savings accounts, property values), and get AI-powered financial insights — all running on your own infrastructure with your data never leaving your server.
Your data stays yours. No cloud subscriptions, no third-party analytics, no data selling. Everything runs locally via Docker.
Visit zumfi.net for more information.
![]() Dashboard |
![]() Transactions |
![]() Budget vs Actual |
![]() Portfolio Overview |
![]() Stock Portfolio |
![]() Recurring Bills |
![]() Mortgage Tracker |
- Monthly KPI cards - income, expenses, savings rate, net worth at a glance
- Interactive charts - spending trends, expense category breakdowns
- Month-close wizard - guided workflow to review and finalize each month with savings allocation to your own savings goals
- AI-powered insights - anomaly detection, spend forecasts, recurring expense analysis (via local Ollama LLM)
- Upload and parse bank statements, stock statements, and savings account statements
- Multi-currency support with automatic conversion
- Automatic PDF parsing for Czech banks:
- Raiffeisen CZ
- CSOB / Ceska Sporitelna
- Revolut
- UniCredit
- Czech Universal format
- CSV and Excel import wizard with column mapping
- Multi-account support with automatic statement linking
Your bank missing? See Contributing — we're building the world's most complete open-source bank parser, and every new format helps everyone.
- Automatic AI-learned category allocation of transactions from bank statements
- Intelligent categorization system:
- User-defined rules (highest priority)
- AI-learned patterns from your corrections
- Keyword-based matching
- Auto-learning - correcting a category teaches the system for next time
- Recurring bill tracker with due date reminders
- Mortgage calculator with amortization schedule
- Mortgage event tracking (extra payments, rate changes)
- Bill status checklist per month
- Monthly budget allocations per category
- Smart suggestions based on historical spending
- Visual comparison - budgeted vs. actual with progress bars
- Overspend alerts when approaching or exceeding limits
- Goal tracking with target amounts and deadlines
- Allocation wizard - distribute surplus income across goals
- Progress visualization with contribution history
- Savings accounts with balance and interest tracking
- Investment accounts - deposits, withdrawals, performance
- Stock holdings - shares, cost basis, market value, profit and loss
- Real estate - property values, mortgages, equity calculation
- Multi-currency portfolio with CZK/EUR/USD support
- Daily exchange rates from the Czech National Bank (CNB)
- Automatic conversion across CZK, EUR, USD
- Per-account currency assignment
- Portfolio values consolidated in your preferred currency
- 3 languages supported: English, Czech, Ukrainian
- Complete UI translation including charts, labels, and messages
- Interactive rabbit mascot with mood-based expressions
- Financial mood awareness - Zumfi reacts to your spending habits
- Page-specific insights - contextual tips on every page
- Draggable and proximity-aware - follows your cursor, hides near edges
- Idle behaviors - ambient animations when not interacting
- JWT authentication with refresh token rotation
- Google OAuth integration (optional)
- TOTP two-factor authentication (2FA)
- Rate limiting with Redis-backed sliding windows
- Security headers middleware
- Multi-user support with complete data isolation
Already using an AI coding agent? Just give it this prompt and let it handle the rest:
Claude Code / Claude CLI:
Clone https://github.com/Simmak7/zumfi-finance.git and set it up:
create .env from .env.example, generate a secure SECRET_KEY,
and run docker compose up -d --build. Then tell me the URL to open.
OpenAI Codex / ChatGPT:
Help me install Zumfi Finance from https://github.com/Simmak7/zumfi-finance.git
- clone the repo, configure .env with a strong secret key, start Docker services
Cursor / Windsurf / Any AI IDE:
Open a terminal, paste the repo URL, and ask your AI assistant: "Set up this project with Docker"
The AI will clone, configure, build, and start everything. You just open localhost:3001 when it's done.
- Docker and Docker Compose
- 4 GB RAM minimum (8 GB recommended for AI features)
git clone https://github.com/Simmak7/zumfi-finance.git
cd zumfi-financecp .env.example .envEdit .env and set a strong SECRET_KEY:
SECRET_KEY=your-random-32-character-string-heredocker compose up -d --buildThis starts:
| Service | Description | Local Port |
|---|---|---|
| Frontend | React UI | localhost:3001 |
| Backend | FastAPI server | localhost:8001 |
| PostgreSQL | Database | 5433 |
| Redis | Cache and queue | 6380 |
| Ollama | Local AI (optional) | 11435 |
| Celery | Background tasks | - |
Navigate to http://localhost:3001 and create your account.
Pull a model into Ollama for AI-powered analysis:
docker exec finance_ollama ollama pull llama3.2Our vision: the first truly universal open-source personal finance app — one that can parse bank statements from any bank in the world, in any language, in any format.
We already support several Czech banks and Revolut, but the world has thousands of banks. Every parser to support new bank statement analysis and transaction uploads you contribute unlocks Zumfi for an entire country or institution. That's the power of open source.
Add your bank's parser for your bank statements — This is the single highest-impact contribution. Upload a sample statement (anonymized), write a parser, and suddenly every user of that bank can use Zumfi. We have a modular parser architecture that makes adding new banks straightforward.
Improve existing features — Better charts, smarter categorization, new languages, accessibility improvements — all welcome.
Report bugs and suggest ideas — Open an issue. Even "this doesn't work with my bank's PDF" is valuable feedback.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Let's build something that gives everyone, everywhere, full control over their finances.
If Zumfi helps you manage your finances, consider supporting the project:
- GitHub Sponsors - Buy a carrot for Zumfi the rabbit!
- Star this repository
- Share with friends
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite 7, Framer Motion, Recharts, Chart.js, dnd-kit |
| Backend | Python, FastAPI 0.115, SQLAlchemy (async), Alembic |
| Database | PostgreSQL 16 |
| Cache and Queue | Redis 7, Celery |
| AI Engine | Ollama (local LLM - Llama, Mistral, etc.) |
| Auth | JWT with bcrypt, Google OAuth, TOTP 2FA |
| Exchange Rates | Czech National Bank (CNB) daily rates |
| Containerization | Docker Compose |
zumfi-finance/
backend/
Dockerfile
app/
main.py # FastAPI entry (13 routers)
core/ # Auth, DB, config, security
migrations/ # Alembic DB migrations
features/
auth/ # JWT, OAuth, 2FA
statements/ # PDF parsing engine
categories/ # Smart categorization
dashboard/ # KPIs and month-close
budgets/ # Budget management
goals/ # Savings goals
bills/ # Bills and mortgages
portfolio/ # Portfolio tracker
analysis/ # AI insights (Ollama)
accounts/ # Multi-bank accounts
imports/ # CSV/Excel import
settings/ # User preferences
donate/ # Support the project
tests/
frontend/
Dockerfile
src/
features/ # Feature modules
components/ # Shared UI
context/ # React contexts
i18n/ # Translations (EN, CS, UK)
services/api.js # API client
docker-compose.yml
.env.example
LICENSE
| Bank | Format | Status |
|---|---|---|
| Raiffeisen CZ | Fully supported | |
| Revolut | Fully supported | |
| CSOB / Ceska Sporitelna | Fully supported | |
| UniCredit | Fully supported | |
| Universal format | Auto-detection fallback | |
| Any bank | CSV / Excel | Via import wizard |
Your bank missing? See Contributing - we're building the world's most complete open-source bank parser, and every new format helps everyone.
See .env.example for all available configuration options:
| Variable | Description | Default |
|---|---|---|
SECRET_KEY |
JWT signing key | Must change for production |
POSTGRES_PASSWORD |
Database password | Must change for production |
DATABASE_URL |
PostgreSQL connection string | Auto-configured |
REDIS_URL |
Redis connection string | redis://redis:6379/0 |
OLLAMA_HOST |
Ollama AI server | http://ollama:11434 |
GOOGLE_CLIENT_ID |
Google OAuth (optional) | Empty |
GOOGLE_CLIENT_SECRET |
Google OAuth (optional) | Empty |
CORS_ORIGINS |
Allowed CORS origins | http://localhost:3001 |
- Mobile-responsive UI improvements
- Data export (CSV, PDF reports)
- Bank API integrations (PSD2 / Open Banking)
- Shared household accounts
- Receipt scanning (OCR)
- Native mobile app
- AI financial advisor chat
This project is licensed under the Business Source License 1.1 (BUSL-1.1).
- Personal and non-commercial use: Fully permitted
- Commercial production use: Requires a separate license
- Change Date: March 29, 2030 - after this date, the code becomes available under the Apache License 2.0
See the LICENSE file for full details.






