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.
A lavender-white creature with a gold crown, whiskers, and a personality driven by your finances.
Zumfi is an interactive SVG mascot that lives on your screen. Drag it anywhere, double-click to send it home, or hover it over dashboard elements for contextual financial commentary. ### Expressions & Outfits Zumfi's appearance changes based on your financial health: | Financial State | Expression | Outfit | Animation | |----------------|------------|--------|-----------| | Thriving (health > 85%, savings > 25%) | Excited | Celebration confetti | Celebrate | | Goal reached | Excited | Celebration confetti | Hop | | Budget master (all categories < 80%) | Happy | Sunglasses | Hop | | Portfolio boom (> +5%) | Excited | Money tree | — | | Steady (health 40-85%) | Happy | Casual | Idle | | Overspending | Concerned | Broke outfit | — | | Crisis (health < 20%) | Concerned | Broke + sweat drop | — | ### Proximity Intelligence Drag Zumfi near any UI element tagged with a `data-zumfi-zone` attribute, and it generates context-aware speech bubbles. For example: - Near the **income KPI** → compares income to last month - Near the **category chart** → comments on your top spending category - Near the **bills section** → reminds you about upcoming due dates - Works across all pages: Dashboard, Transactions, Budget, Bills, Import, Portfolio, Settings ### Other Behaviors - **Idle animations** — cycles through expressions when inactive - **Emotional memory** — remembers mood history to detect multi-month trends - **Persistent position** — drag position saved to localStorage - **Mute option** — silence speech bubbles in preferences --- ## Tech Stack | Layer | Technology | Version | |-------|-----------|---------| | **Frontend** | React + Vite | 19.2 / 7.2 | | **UI & Charts** | Recharts, Chart.js, Framer Motion | 3.6 / 4.5 / 12.26 | | **Icons** | Lucide React | 0.562 | | **Backend** | FastAPI + Uvicorn | 0.115 / 0.34 | | **ORM** | SQLAlchemy (async) + Alembic | 2.0 / 1.14 | | **Database** | PostgreSQL | 16 | | **Cache & Queue** | Redis + Celery | 7 / 5.4 | | **PDF Parsing** | pdfplumber + Tesseract OCR | 0.11 / 0.3 | | **AI** | Ollama (local LLM — llama3.2) | latest | | **Auth** | JWT (python-jose + bcrypt) | — | | **Containerization** | Docker Compose | — | --- ## Architecture ``` ┌─────────────────────────────────────────────────────────┐ │ Docker Compose │ │ │ │ ┌──────────┐ ┌──────────┐ ┌────────┐ ┌───────────┐ │ │ │ Frontend │ │ Backend │ │ Redis │ │ PostgreSQL│ │ │ │ React 19 │→ │ FastAPI │→ │ 7-alp │ │ 16 │ │ │ │ Vite 7 │ │ Uvicorn │ └────┬───┘ └─────┬─────┘ │ │ │ :3001 │ │ :8001 │ │ │ │ │ └──────────┘ └────┬─────┘ ┌────┴───┐ │ │ │ │ │ Celery │ │ │ │ │ │ Worker │────────┘ │ │ │ └────────┘ │ │ │ │ │ ┌────┴─────┐ │ │ │ Ollama │ │ │ │ llama3.2 │ │ │ │ :11435 │ │ │ └──────────┘ │ └──────────────────────────────────────────────────────────┘ ``` ### Backend Feature Modules Each feature is self-contained with its own router, service, models, and schemas: ``` backend/app/features/ ├── auth/ # JWT authentication ├── statements/ # PDF upload & multi-bank parsing │ └── parsers/ # Bank-specific parser strategies ├── categories/ # Transaction classification engine ├── analysis/ # Analytics, trends, anomaly detection ├── dashboard/ # Aggregation & KPIs ├── goals/ # Savings goals & allocation ├── budgets/ # Monthly budget tracking ├── bills/ # Recurring bill management ├── imports/ # CSV/Excel import wizard ├── accounts/ # Multi-bank account management ├── portfolio/ # Savings & investment tracking └── settings/ # User preferences ``` ### Frontend Feature Modules ``` frontend/src/features/ ├── auth/ # Login & registration ├── dashboard/ # Main overview + modals + charts ├── transactions/ # Transaction list, search, categorization ├── budget/ # Budget editor + goal management ├── bills/ # Recurring bills tracker ├── import/ # 4-step import wizard ├── portfolio/ # Savings, stocks, P&L ├── categories/ # Category editor ├── settings/ # Preferences └── zumfi/ # Interactive mascot system ``` ### Database Schema 20 migration files managing the following core tables: | Table | Purpose | |-------|---------| | `users` | User accounts with auth & preferences | | `categories` | Spending categories with icons & colors | | `category_mappings` | Auto-learn keyword → category rules | | `statements` | Uploaded bank statement metadata | | `transactions` | Individual financial transactions | | `goals` | Savings goals with targets & deadlines | | `goal_contributions` | Monthly goal allocation records | | `accounts` | Multi-bank account definitions | | `budgets` | Monthly per-category budget allocations | | `recurring_bills` | Bill definitions & schedules | | `savings_accounts` | Portfolio savings tracking | | `investments` | Portfolio investment records | | `stock_holdings` | Individual stock/ETF positions | | `stock_trades` | Buy/sell trade history | | `stock_dividends` | Dividend payment records | | `stock_snapshots` | Per-stock historical data | | `portfolio_snapshots` | Monthly portfolio KPIs | | `exchange_rates` | Currency conversion rates | --- ## Getting Started ### Prerequisites - [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) - Git ### Installation ```bash # Clone the repository git clone https://github.com/Simmak7/zumfi.git cd zumfi # Copy environment template and configure cp .env.example .env # Edit .env with your preferred settings (database passwords, secret key, etc.) # Start all services docker-compose up -d --build # The app will be available at: # Frontend: http://localhost:3001 # Backend: http://localhost:8001 # API Docs: http://localhost:8001/docs ``` ### Quick Start 1. Open `http://localhost:3001` in your browser 2. Register a new account 3. Upload a bank statement PDF (Raiffeisen, Revolut, ČSOB, Česká spořitelna, UniCredit, FIO, mBank, or any Czech/Slovak bank via the universal parser) 4. Watch as transactions are automatically parsed and categorized 5. Explore the dashboard, set budgets, define savings goals 6. Drag Zumfi around the screen for financial insights ### Useful Commands ```bash # Rebuild after code changes docker-compose up -d --build backend frontend # View backend logs docker-compose logs -f backend # Health check curl http://localhost:8001/health # Stop all services docker-compose down ``` --- ## Project Status > **Current Version: 1.1** — Active Development The application is fully functional with a comprehensive feature set. All core features are implemented and operational. ### Completed Sprints | Sprint | Focus | Status | |--------|-------|--------| | Sprint 1 | Foundation — Auth, DB, Docker, basic UI | Done | | Sprint 2-4 | Bills, Budgets, Import Wizard, Dashboard Viz, Smart Features | Done | | Sprint 5 | Dashboard enhancements, shared components, multi-bank parsers | Done | | Sprint 6 | Testing infrastructure, legacy cleanup, test suite | Done | | Post-Sprint | Portfolio, Settings, Zumfi mascot, stock tracking, new parsers | Done | ### What's Working - Full JWT authentication flow (register, login, session management) - PDF upload and parsing for 7 dedicated bank parsers (Raiffeisen, Revolut, ČSOB, Česká spořitelna, UniCredit, FIO, mBank) plus a Czech Universal fallback for 20+ other banks - CSV/Excel import with column mapping wizard - Smart 4-tier transaction categorization with auto-learning - Interactive dashboard with charts, KPIs, and month-close wizard - Budget management with planned vs. actual tracking - Savings goals with allocation suggestions - Recurring bills tracker with auto-detection - Portfolio tracking (savings + stocks + P&L) - Multi-currency support (CZK, EUR, USD) - Zumfi mascot with 12 financial moods and proximity intelligence - Local AI summaries via Ollama (optional) - Full Docker Compose deployment --- ## Roadmap ### Near-Term Goals - [ ] **Mobile-responsive UI** — optimize layouts for tablets and phones - [ ] **Data export** — CSV/PDF export of transactions and reports - [ ] **Recurring transaction rules** — auto-categorize based on saved rules - [ ] **Multi-language support** — Czech and English UI localization - [ ] **Notifications** — email/push alerts for budget limits and bill due dates ### Medium-Term Goals - [ ] **Bank API integrations** — direct account connection (PSD2/Open Banking) - [ ] **Advanced reporting** — yearly summaries, tax-ready reports, net worth tracking - [ ] **Shared households** — multi-user budgets with shared categories - [ ] **Receipt scanning** — OCR for paper receipts with transaction matching - [ ] **Investment analytics** — deeper portfolio analysis, benchmarking, asset allocation recommendations ### Long-Term Vision - [ ] **Mobile app** — React Native companion app - [ ] **AI financial advisor** — personalized recommendations based on spending patterns - [ ] **Automated savings** — rule-based transfers and round-up savings - [ ] **Community templates** — shareable budget and category templates ---Built with care for people who want to understand their money.