{"id":50358657,"url":"https://github.com/pacphi/finima","last_synced_at":"2026-05-30T00:01:31.111Z","repository":{"id":353398569,"uuid":"1205126409","full_name":"pacphi/finima","owner":"pacphi","description":"Personal finance","archived":false,"fork":false,"pushed_at":"2026-05-12T15:14:37.000Z","size":7091,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T17:13:21.181Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pacphi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audit-ignore","citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-08T16:56:51.000Z","updated_at":"2026-05-12T16:11:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pacphi/finima","commit_stats":null,"previous_names":["pacphi/finima"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pacphi/finima","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacphi%2Ffinima","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacphi%2Ffinima/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacphi%2Ffinima/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacphi%2Ffinima/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pacphi","download_url":"https://codeload.github.com/pacphi/finima/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacphi%2Ffinima/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33675019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-30T00:01:30.153Z","updated_at":"2026-05-30T00:01:31.098Z","avatar_url":"https://github.com/pacphi.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Finima 💸\n\n**Your finances, finally under your control.**\n\n\u003e _Finance + Intelligence = Finima._ Because understanding your money shouldn't require handing it to someone else.\n\n[![CI](https://github.com/pacphi/finima/actions/workflows/ci.yml/badge.svg)](https://github.com/pacphi/finima/actions/workflows/ci.yml)\n[![Release](https://github.com/pacphi/finima/actions/workflows/release.yml/badge.svg)](https://github.com/pacphi/finima/actions/workflows/release.yml)\n[![Check Links](https://github.com/pacphi/finima/actions/workflows/check-links.yml/badge.svg)](https://github.com/pacphi/finima/actions/workflows/check-links.yml)\n[![GitHub release](https://img.shields.io/github/release/pacphi/finima.svg)](https://github.com/pacphi/finima/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nFinima 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.\n\n🔒 **No cloud sync. No subscriptions. No data brokers.** Just fast, private, intelligent finance.\n\n---\n\n## 💡 Why Finima?\n\nMost finance apps ask you to trust them with your most sensitive data. Finima flips that model entirely. Here's what makes it different:\n\n- 🏠 **100% self-hosted** — your financial data lives on your hardware, under your rules. No SaaS, no terms-of-service surprises.\n- 🤖 **Local AI categorization** — an Ollama-powered LLM classifies your transactions on-device. No cloud API calls, ever.\n- 📂 **Bank-agnostic import** — bring data from any institution via CSV, OFX, QIF, or XLSX, with a guided column-mapping UI.\n- ⚡ **Built for speed** — a Rust backend processes thousands of transactions in milliseconds; the React frontend stays snappy at any scale.\n- 🔄 **Learns your patterns** — recurring transaction detection, inter-account flow analysis, and a composite health score that improves as it learns your finances.\n- 🔑 **Passwordless by default** — magic-link sign-in means no passwords to forget, reuse, or breach.\n\n---\n\n## 📸 Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/02-dashboard.png\" alt=\"Dashboard — financial health at a glance\" width=\"48%\"\u003e\n  \u0026nbsp;\n  \u003cimg src=\"images/05-transactions.png\" alt=\"Transactions — AI-categorized with search and filters\" width=\"48%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eDashboard\u003c/em\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003cem\u003eTransactions\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/08-money-flow.png\" alt=\"Money Flow — Sankey diagram of inter-account transfers\" width=\"48%\"\u003e\n  \u0026nbsp;\n  \u003cimg src=\"images/09-budget.png\" alt=\"Budget — category budgets with real-time progress\" width=\"48%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eMoney Flow\u003c/em\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003cem\u003eBudget Tracker\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/10-goals.png\" alt=\"Goals — savings targets with contribution tracking\" width=\"48%\"\u003e\n  \u0026nbsp;\n  \u003cimg src=\"images/07-recurring.png\" alt=\"Recurring — subscription and recurring payment detection\" width=\"48%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eSavings Goals\u003c/em\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003cem\u003eRecurring Payments\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/03-portfolios.png\" alt=\"Portfolios — account groupings and net worth tracking\" width=\"48%\"\u003e\n  \u0026nbsp;\n  \u003cimg src=\"images/11-news.png\" alt=\"News — financial articles with AI summaries\" width=\"48%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003ePortfolios\u003c/em\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003cem\u003eFinancial News\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n## ✨ What It Does\n\n| Capability                             | How                                                                                            |\n| -------------------------------------- | ---------------------------------------------------------------------------------------------- |\n| 🤖 **AI categorization**              | Local LLM labels every transaction — no cloud API calls, no data leaving your server           |\n| 📂 **Multi-format import**            | CSV, OFX, QIF, XLSX — guided column-mapping UI works with any bank export                     |\n| 💰 **Budget tracking**                | Set category budgets, watch real-time progress bars fill as you spend                         |\n| 🎯 **Savings goals**                  | Define targets, see automatic contribution tracking month by month                            |\n| 🔄 **Recurring detection**            | Surfaces every subscription, utility bill, and regular payment automatically                  |\n| 🌊 **Money flow visualization**       | Sankey diagrams reveal exactly how money moves across your accounts                           |\n| 📊 **Financial health score**         | Composite gauge of spending habits, savings rate, and debt load — all in one number           |\n| 📈 **Cash flow \u0026 net worth charts**   | Waterfall, donut, and time-series views so trends are impossible to miss                      |\n| 📰 **Financial news with AI digest**  | Aggregated articles with LLM-generated summaries, filtered to what matters to you            |\n| ⚡ **Real-time progress**             | WebSocket updates stream import and AI processing status live — no page refreshes needed      |\n\n## ⚙️ How It Works\n\n```text\nBank export → Upload via UI → Parse \u0026 normalize → AI categorization → Store in PostgreSQL\n                                                        ↓\n                                            Ollama LLM (on-device)\n                                                        ↓\n                              Analysis: budgets · goals · recurring · health score · flows\n                                                        ↓\n                                         React dashboard (real-time via WebSocket)\n```\n\nUnder 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.\n\n## 🚀 Quick Start\n\n```bash\n# Clone and configure\ngit clone https://github.com/pacphi/finima.git\ncd finima\ncp .env.example .env\n\n# Start everything at once\nmake start          # infrastructure + backend + frontend\n# → Open http://localhost:5173\n```\n\nOr step by step:\n\n```bash\nmake docker-infra   # Start PostgreSQL + MinIO (+ Ollama when LLM=ollama)\nmake dev            # Start backend (port 3000) + frontend (port 5173)\n```\n\n**Prerequisites:** Docker, Rust 1.85+, Node.js 24+, pnpm 10+ — or just Docker for infrastructure.\nSee [Quick Start](docs/guides/quick-start.md) for the full setup guide, or [Getting Started](docs/guides/getting-started.md) if you prefer a step-by-step walkthrough with no assumed technical knowledge.\n\n## 🏗️ Architecture\n\n```text\nReact 19 SPA (TypeScript) ──REST + WebSocket──→ Axum API Gateway\n        │                                               │\n   React Router                                  Rust Workspace\n   Zustand state                          ┌────────────┼────────────┐\n   Recharts + Tailwind                    │            │            │\n                                     finima-llm  finima-analysis  finima-ingest\n                                          │            │            │\n                                     Ollama LLM  PostgreSQL 16   MinIO / S3\n```\n\n- 🦀 **Backend:** Rust (Axum 0.8), 8 workspace crates, SQLx, async throughout\n- ⚛️ **Frontend:** React 19, TypeScript, Vite, Tailwind CSS, Recharts\n- 🔒 **Privacy:** embeddings and AI inference run entirely on your machine\n\nSee [Architecture Overview](docs/guides/architecture-overview.md) for the full design and [ADRs](docs/ADRs/README.md) for the rationale behind key decisions.\n\n## 🎯 Features at a Glance\n\n- 🔑 **Magic-link auth** — passwordless sign-in, zero credentials to manage\n- 📂 **Smart import** — any bank, any format, guided column mapping\n- 🤖 **On-device AI** — Ollama + Gemma 4, no cloud required\n- 💰 **Budget \u0026 goals** — real-time category budgets and savings targets\n- 🌊 **Money flow (Sankey)** — visualize inter-account transfers at a glance\n- 📊 **Health score** — one number that captures your financial fitness\n- 🔄 **Recurring radar** — auto-detect subscriptions and regular payments\n- 📈 **Charts everywhere** — waterfall, donut, time-series, net worth timeline\n- 📰 **News digest** — financial headlines with AI-written summaries\n- 🌙 **Dark / light mode** — plus configurable currency and date formats\n\n## 📚 Documentation\n\n### 👥 For Everyone\n\n| Document                                                          | Description                                         |\n| ----------------------------------------------------------------- | --------------------------------------------------- |\n| [Getting Started](docs/guides/getting-started.md)                 | Step-by-step setup — no technical knowledge needed  |\n| [Quick Start](docs/guides/quick-start.md)                         | Concise setup guide for developers                  |\n| [User Guide](docs/guides/user-guide.md)                           | End-to-end walkthrough of every feature             |\n| [UI Overview](docs/guides/user-interface-overview.md)             | Visual tour of every screen                         |\n| [Glossary](docs/guides/glossary.md)                               | Plain-language definitions for every term           |\n| [Deployment](docs/guides/deployment.md)                           | Production deployment — bare metal, Docker, cloud   |\n\n### 👩‍💻 For the Team\n\n| Document                                                          | Description                                         |\n| ----------------------------------------------------------------- | --------------------------------------------------- |\n| [Maintainer Guide](docs/guides/maintainer-guide.md)               | Dev setup, coding standards, PR workflow            |\n| [Architecture Overview](docs/guides/architecture-overview.md)     | System design — crates, data flow, boundaries       |\n| [Object Storage](docs/guides/object-storage-setup.md)             | MinIO / S3 configuration                            |\n| [Backup \u0026 Recovery](docs/guides/database-backup.md)               | Database backup and point-in-time restore           |\n| [Observability](docs/guides/observability.md)                     | Metrics, tracing, and dashboard setup               |\n| [Troubleshooting](docs/guides/troubleshooting.md)                 | Common issues and fixes                             |\n\n### 🏛️ Architecture Decisions\n\nSee all ADRs in [docs/ADRs](docs/ADRs/README.md).\n\n### 🗺️ Domain Model\n\nSee all DDDs in [docs/DDDs](docs/DDDs/README.md).\n\n## 🛠️ Development\n\n```bash\nmake help           # all available targets\nmake ci             # format-check + lint + typecheck + unit tests\nmake test           # unit tests only (no Docker needed)\nmake test-all       # full suite — auto-starts test DB, runs everything\nmake test-llm       # LLM tests — auto-starts Ollama, pulls model\n```\n\nSee the [Maintainer Guide](docs/guides/maintainer-guide.md) for the full developer reference.\n\n## 🔧 Tech Stack\n\n| Layer          | Technology                                                                            |\n| -------------- | ------------------------------------------------------------------------------------- |\n| Backend        | Rust, Axum 0.8, PostgreSQL 16 (SQLx), Tokio, MinIO / S3                              |\n| AI             | Ollama (Gemma 4), local inference, on-device categorization and feed summarization    |\n| Frontend       | React 19, TypeScript, Vite 8, Tailwind CSS, Recharts, React Router, Zustand          |\n| Auth           | Magic-link (passwordless), JWT, SHA-2                                                 |\n| Infrastructure | Docker Compose, GitHub Actions CI, Dependabot, Prometheus-compatible metrics         |\n\n## 📄 License\n\n[MIT](LICENSE)\n\n---\n\n_Finima: because your finances deserve intelligence, not just a spreadsheet._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpacphi%2Ffinima","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpacphi%2Ffinima","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpacphi%2Ffinima/lists"}