Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/soker90/finper/llms.txt

Use this file to discover all available pages before exploring further.

Finper is a self-hosted personal finance management application built for people who want complete control over their financial data. Instead of trusting a third-party service with your bank accounts, spending habits, and savings goals, Finper runs entirely on your own infrastructure — your data lives in a single SQLite file on your machine or server, with zero cloud dependency. It covers the full spectrum of personal finance: from day-to-day account transactions and monthly budgets all the way to loan amortization schedules, recurring subscriptions, pension tracking, and property supply readings.

What Finper covers

Accounts & Transactions

Manage bank accounts and log income, expenses, and transfers with per-category tagging and annual financial overviews.

Budgets & Categories

Set monthly spending caps by category and track how your actual transactions measure up against each budget.

Loans

Model French-amortization loans with full payment schedules, interest-rate change events, and outstanding balance tracking.

Subscriptions

Track recurring charges, receive detected subscription candidates, and keep all fixed monthly costs in one place.

Debts & Goals

Record money lent to or borrowed from third parties, and define savings goals with target and current amounts.

Pensions & Stocks

Log pension plan contributions and track stock purchases and sales with live price lookups via Yahoo Finance.

Supplies & Utilities

Associate properties with utility meters, record supply readings, and monitor electricity tariffs and consumption over time.

Tickets

Digitise receipts through the optional finper-bot integration — list, review, and delete pending ticket records from the app.

Technology stack

LayerTechnology
RuntimeNode.js 24
Backend frameworkExpress 5 + TypeScript
DatabaseSQLite (better-sqlite3) + Drizzle ORM
AuthPassport (local + JWT strategy), jsonwebtoken
ValidationJoi
Error handling@hapi/boom
Frontend frameworkReact 19 + Vite
UI libraryMaterial UI v9 (MUI)
RoutingReact Router v7
Data fetchingSWR + axios
Testing (API)Jest + Supertest
Testing (Client)Vitest + Testing Library + MSW

Monorepo structure

Finper is a pnpm workspaces monorepo. All runnable packages live under packages/:
finper/
├── packages/
│   ├── api/      @soker90/finper-api      — Express REST API  (:3008)
│   ├── client/   @soker90/finper-client   — React 19 + Vite SPA  (:5173)
│   ├── db/       @soker90/finper-db       — Drizzle ORM schema & SQLite migrations
│   └── types/    @soker90/finper-types    — Shared TypeScript types
├── docs/
├── Makefile
├── docker-compose.yml
├── .env.example
└── pnpm-workspace.yaml
The dependency graph flows in one direction: the client calls the API over HTTP; the API imports @soker90/finper-db and @soker90/finper-types from their compiled dist/ output; both db and types are built before the API starts.
Finper is released under the GNU General Public License v3.0 or later (GPL-3.0+). Any modifications you distribute must be shared under the same license. See the LICENSE file for the full text.

Build docs developers (and LLMs) love