arthur@site: ~/projects/ledgerone tty · 80×∞
..
arthur@site:~/projects/ledgerone$
LedgerOne
2026-05-20 · react · fastapi · local ai · plaid · fintech · repo

Overview

Every budgeting app I have ever used eventually wants me to either pay a subscription, ship my transaction history to their servers, or watch features I rely on get gated behind a higher tier. LedgerOne is my answer to all of that. It is a personal finance app that runs entirely on my own machine, talks directly to Chase through Plaid Production, and uses a local Ollama model for every piece of “AI” in the product. Nothing about my spending leaves the box.

The frontend is a React 19 + Vite single-page app. The backend is a FastAPI server with a single SQLite database file, and FastAPI serves the compiled frontend too, so the whole product is one process. It runs on an always-on Linux home server now, deployed automatically from my editing machine with health checks and rollback. When I open the app I get a dashboard with monthly income, spending, savings, cash flow, budget status, recent transactions, and an AI brief. There is a transactions table with search, filters, review states, and CSV export, a budget planning screen with category progress and planned payments, an insights screen for AI prompts and detected patterns, and an accounts screen that handles Chase via Plaid Link with a CSV import fallback for anything Plaid does not cover. The CSV importer has duplicate detection and a review preview so I never double-count a transaction.

The AI side runs on a local Qwen model through Ollama on my desktop GPU, reached over my private network through an authenticated gateway. It handles categorization, generates the daily brief, surfaces patterns, and answers free-form questions about my spending. It is doing real work, not a chat gimmick. Because the model is local, I can let it see everything without thinking twice about who else might one day read those prompts.

Key Features

  • Local-first architecture: SQLite database, FastAPI backend, no cloud dependency
  • Chase auto-sync through Plaid Production with CSV fallback for anything outside Plaid’s coverage
  • AI categorization, daily briefs, and pattern detection running entirely on a local Ollama model
  • Dashboard with monthly income, spending, savings, cash flow, budget status, and recent transactions
  • Transactions table with search, filters, review states, and CSV export
  • Budget planning with category progress, planned payments, and rule-based automation
  • CSV import with duplicate detection and a review preview before commit

Tech Stack

  • React 19 + Vite (frontend)
  • Python + FastAPI (backend, also serves the built frontend)
  • SQLite for storage
  • Ollama running a local Qwen model for all AI features
  • Plaid Production API for Chase sync
  • Debian home server + systemd for hosting
this prompt is real. help lists commands, tab completes, arrows recall history
arthur@site:~/projects/ledgerone$