folio.

Folio

A private personal finance app for macOS and Windows, in the spirit of classic Quicken. Your finances stay on your computer in a password-encrypted file. Built with Tauri, React, TypeScript, and encrypted SQLite.

Download Folio · Website · Open source under the MIT License.

Start with Contributing for collaboration, Architecture for the code map, Desktop to build and release installers, and Project status for current capabilities and plans. Agent instructions are in AGENTS.md.

Features

Data and privacy

Everything is stored in one file on your computer, encrypted with a password you choose when you first open Folio. There is no account, server, or cloud copy, and there is no way to recover a forgotten password. Lock Folio in the sidebar closes the file, and Folio locks itself after 15 minutes without use (change this in Settings). Folio keeps encrypted daily backups beside the file; each one opens with the password you had when it was made. Download backup in Settings saves an unencrypted JSON copy wherever you choose; keep it somewhere safe.

Writes are validated before saving and use a version number to reject conflicting edits. Amounts are integer USD cents. A new file starts with a fictional demo; choose Start with my finances to begin with empty records.

Account balances are manual statement snapshots. Recording transactions does not adjust balances. Transfers are excluded from income and spending. Budget limits repeat monthly and edits affect historical views. Goal savings are informational and do not add to net worth. Import skips transactions already in Folio: bank transaction IDs match exactly, and otherwise date, description, amount, and account must all match. Matches are counted, so two identical purchases on the same day both import, while importing the same file again adds nothing. Imported categories are suggestions; check transfers between your own accounts.

Automatic bank sync, investment account imports, live investment prices, multiple currencies, automatic recurring-bill detection, and syncing between computers are not included yet.

Development

Requires Node 22.13+ and, for the desktop app, Rust. See docs/DESKTOP.md for platform prerequisites.

npm ci
npm run desktop:dev   # the desktop app with live reload
npm run dev           # interface only, in a browser, with fictional data

Checks (CI runs all of them):

npm run format:check
npm run lint
npm run typecheck
npm test
npm run test:rust
npm run build

Run npm run format to apply Prettier formatting and cargo fmt in src-tauri/ for Rust. Do not commit financial exports, backups, or data files.

Credit cards and bills

Credit cards show balance, known credit limit, utilization, statement balance, minimum payment, next due date, purchase APR, and last payment, entered on the card's details. Negative credit-card balances represent credit owed to you and increase net worth.

Bills support one-time, weekly, every-two-weeks, monthly, quarterly, and yearly schedules (optionally ending on a date), income as well as payments, an accessible list and calendar, overdue items, per-occurrence paid/undo status, and autopay reminder labels. Monthly dates clamp to the last day of shorter months without drifting in following months. Card minimum payments appear in Bills automatically when a due date exists. Marking a bill paid does not send money, create a transaction, or enroll in autopay. Changes to recurring schedules apply to past and future views.