Skip to content

pacphi/finima

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

87 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Finima πŸ’Έ

Your finances, finally under your control.

Finance + Intelligence = Finima. Because understanding your money shouldn't require handing it to someone else.

CI Release Check Links GitHub release License: MIT

Finima is a privacy-first, self-hosted personal finance intelligence platform. Import transactions from any bank, let a local AI classify and analyze them, and get deep insight into your spending, savings, and cash flow β€” without your data ever leaving your machine.

πŸ”’ No cloud sync. No subscriptions. No data brokers. Just fast, private, intelligent finance.


πŸ’‘ Why Finima?

Most finance apps ask you to trust them with your most sensitive data. Finima flips that model entirely. Here's what makes it different:

  • 🏠 100% self-hosted β€” your financial data lives on your hardware, under your rules. No SaaS, no terms-of-service surprises.
  • πŸ€– Local AI categorization β€” an Ollama-powered LLM classifies your transactions on-device. No cloud API calls, ever.
  • πŸ“‚ Bank-agnostic import β€” bring data from any institution via CSV, OFX, QIF, or XLSX, with a guided column-mapping UI.
  • ⚑ Built for speed β€” a Rust backend processes thousands of transactions in milliseconds; the React frontend stays snappy at any scale.
  • πŸ”„ Learns your patterns β€” recurring transaction detection, inter-account flow analysis, and a composite health score that improves as it learns your finances.
  • πŸ”‘ Passwordless by default β€” magic-link sign-in means no passwords to forget, reuse, or breach.

πŸ“Έ Screenshots

Dashboard β€” financial health at a glance Β  Transactions β€” AI-categorized with search and filters

DashboardΒ Β Β Β Β Β Β Β Transactions

Money Flow β€” Sankey diagram of inter-account transfers Β  Budget β€” category budgets with real-time progress

Money FlowΒ Β Β Β Β Β Β Β Budget Tracker

Goals β€” savings targets with contribution tracking Β  Recurring β€” subscription and recurring payment detection

Savings GoalsΒ Β Β Β Β Β Β Β Recurring Payments

Portfolios β€” account groupings and net worth tracking Β  News β€” financial articles with AI summaries

PortfoliosΒ Β Β Β Β Β Β Β Financial News


✨ What It Does

Capability How
πŸ€– AI categorization Local LLM labels every transaction β€” no cloud API calls, no data leaving your server
πŸ“‚ Multi-format import CSV, OFX, QIF, XLSX β€” guided column-mapping UI works with any bank export
πŸ’° Budget tracking Set category budgets, watch real-time progress bars fill as you spend
🎯 Savings goals Define targets, see automatic contribution tracking month by month
πŸ”„ Recurring detection Surfaces every subscription, utility bill, and regular payment automatically
🌊 Money flow visualization Sankey diagrams reveal exactly how money moves across your accounts
πŸ“Š Financial health score Composite gauge of spending habits, savings rate, and debt load β€” all in one number
πŸ“ˆ Cash flow & net worth charts Waterfall, donut, and time-series views so trends are impossible to miss
πŸ“° Financial news with AI digest Aggregated articles with LLM-generated summaries, filtered to what matters to you
⚑ Real-time progress WebSocket updates stream import and AI processing status live β€” no page refreshes needed

βš™οΈ How It Works

Bank export β†’ Upload via UI β†’ Parse & normalize β†’ AI categorization β†’ Store in PostgreSQL
                                                        ↓
                                            Ollama LLM (on-device)
                                                        ↓
                              Analysis: budgets Β· goals Β· recurring Β· health score Β· flows
                                                        ↓
                                         React dashboard (real-time via WebSocket)

Under the hood: a Rust workspace of 8 crates handles ingestion, auth, analysis, AI, and the API layer. PostgreSQL is the single source of truth. Ollama runs the model locally. MinIO provides S3-compatible object storage for uploaded files.

πŸš€ Quick Start

# Clone and configure
git clone https://github.com/pacphi/finima.git
cd finima
cp .env.example .env

# Start everything at once
make start          # infrastructure + backend + frontend
# β†’ Open http://localhost:5173

Or step by step:

make docker-infra   # Start PostgreSQL + MinIO (+ Ollama when LLM=ollama)
make dev            # Start backend (port 3000) + frontend (port 5173)

Prerequisites: Docker, Rust 1.85+, Node.js 24+, pnpm 10+ β€” or just Docker for infrastructure. See Quick Start for the full setup guide, or Getting Started if you prefer a step-by-step walkthrough with no assumed technical knowledge.

πŸ—οΈ Architecture

React 19 SPA (TypeScript) ──REST + WebSocket──→ Axum API Gateway
        β”‚                                               β”‚
   React Router                                  Rust Workspace
   Zustand state                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   Recharts + Tailwind                    β”‚            β”‚            β”‚
                                     finima-llm  finima-analysis  finima-ingest
                                          β”‚            β”‚            β”‚
                                     Ollama LLM  PostgreSQL 16   MinIO / S3
  • πŸ¦€ Backend: Rust (Axum 0.8), 8 workspace crates, SQLx, async throughout
  • βš›οΈ Frontend: React 19, TypeScript, Vite, Tailwind CSS, Recharts
  • πŸ”’ Privacy: embeddings and AI inference run entirely on your machine

See Architecture Overview for the full design and ADRs for the rationale behind key decisions.

🎯 Features at a Glance

  • πŸ”‘ Magic-link auth β€” passwordless sign-in, zero credentials to manage
  • πŸ“‚ Smart import β€” any bank, any format, guided column mapping
  • πŸ€– On-device AI β€” Ollama + Gemma 4, no cloud required
  • πŸ’° Budget & goals β€” real-time category budgets and savings targets
  • 🌊 Money flow (Sankey) β€” visualize inter-account transfers at a glance
  • πŸ“Š Health score β€” one number that captures your financial fitness
  • πŸ”„ Recurring radar β€” auto-detect subscriptions and regular payments
  • πŸ“ˆ Charts everywhere β€” waterfall, donut, time-series, net worth timeline
  • πŸ“° News digest β€” financial headlines with AI-written summaries
  • πŸŒ™ Dark / light mode β€” plus configurable currency and date formats

πŸ“š Documentation

πŸ‘₯ For Everyone

Document Description
Getting Started Step-by-step setup β€” no technical knowledge needed
Quick Start Concise setup guide for developers
User Guide End-to-end walkthrough of every feature
UI Overview Visual tour of every screen
Glossary Plain-language definitions for every term
Deployment Production deployment β€” bare metal, Docker, cloud

πŸ‘©β€πŸ’» For the Team

Document Description
Maintainer Guide Dev setup, coding standards, PR workflow
Architecture Overview System design β€” crates, data flow, boundaries
Object Storage MinIO / S3 configuration
Backup & Recovery Database backup and point-in-time restore
Observability Metrics, tracing, and dashboard setup
Troubleshooting Common issues and fixes

πŸ›οΈ Architecture Decisions

See all ADRs in docs/ADRs.

πŸ—ΊοΈ Domain Model

See all DDDs in docs/DDDs.

πŸ› οΈ Development

make help           # all available targets
make ci             # format-check + lint + typecheck + unit tests
make test           # unit tests only (no Docker needed)
make test-all       # full suite β€” auto-starts test DB, runs everything
make test-llm       # LLM tests β€” auto-starts Ollama, pulls model

See the Maintainer Guide for the full developer reference.

πŸ”§ Tech Stack

Layer Technology
Backend Rust, Axum 0.8, PostgreSQL 16 (SQLx), Tokio, MinIO / S3
AI Ollama (Gemma 4), local inference, on-device categorization and feed summarization
Frontend React 19, TypeScript, Vite 8, Tailwind CSS, Recharts, React Router, Zustand
Auth Magic-link (passwordless), JWT, SHA-2
Infrastructure Docker Compose, GitHub Actions CI, Dependabot, Prometheus-compatible metrics

πŸ“„ License

MIT


Finima: because your finances deserve intelligence, not just a spreadsheet.

About

Personal finance

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors