Budget Tracker TUI
A terminal app for tracking your personal budget, built with Rust and Ratatui.
Screenshots
Features
- Add, edit, delete, filter, and sort income and expense transactions
- Recurring transactions, from daily to yearly, generated automatically up to today
- Hierarchical categories and subcategories, editable in-app, with optional fuzzy search
- Monthly and category summaries with interactive charts
- Monthly target budget plus optional per-category budgets, tracked in a dedicated budget view
- CSV import/export (duplicates skipped on import)
- Local SQLite storage with decimal arithmetic (no floating-point rounding errors)
- Fully keyboard-driven, with a built-in help menu
- Runs on Windows, macOS, and Linux; checks for new versions on startup
Installation
Cargo (Linux, macOS, Windows)
With Rust installed (rustup.rs):
This puts the Budget_Tracker command on your PATH. A short alias like alias bt='Budget_Tracker' is handy.
Windows installer (no Rust required)
Download the latest installer from the Releases page and run it. I don't have a Windows developer licence, so it shows as an unknown publisher.
From source
Usage
Launch with Budget_Tracker. The help bar at the bottom shows the keys for the current view, and Ctrl+H opens the full keybindings menu. Settings (o) is where you configure the database path, categories, CSV import/export, and target budget.
For a more detailed walkthrough of every view and setting, see the User Guide.
Data & configuration
Transactions and categories live in a local SQLite database (budget.db), and app preferences in a config.json:
| OS | Database | Config |
|---|---|---|
| Linux | ~/.local/share/BudgetTracker/ |
~/.config/BudgetTracker/ |
| macOS | ~/Library/Application Support/BudgetTracker/ |
same |
| Windows | %APPDATA%\BudgetTracker\ |
same |
The database path is configurable in settings; point it at a cloud-synced folder (iCloud, Dropbox, etc.) to share your budget across devices. Changes are saved to the database immediately.
Older versions stored transactions in a transactions.csv file. On first launch, it is imported into the database automatically and renamed to transactions.csv.migrated-backup.
CSV format
Import/export uses the columns date, description, amount, transaction_type, category, subcategory, with flexible date parsing. Import skips exact duplicates, so re-importing the same file is safe. Full details are in the User Guide.
License
Licensed under the GNU General Public License v3.0. See LICENSE for details.