A fast, modern, and efficient Terminal User Interface (TUI) application for tracking your personal budget, built with Rust and Ratatui.
- 🖼️ Screenshots
- ✨ Features
- 🚀 Getting Started
- ⚡ Quick Start
- ⚙️ Settings & Configuration
- 📁 Data & CSV Format
- References
Main transaction view with summary bar and help
Category summary with expandable/collapsible categories
Monthly summary with interactive chart and budget line
Budget View with yearly, monthly, and categorically focused data
Click to see all monthly summary screenshots
Multi-Month Line chart
Cumulative chart with budget line
Cumulative and multi month chart
Options Menu with Help / Keybindings Menu Open
Category/Sub-Category Fuzzy Search Enabled view
Category Catalog - Editable categories and custom category creation
- Intuitive Terminal UI: Manage your finances directly from your terminal with a clean, responsive interface (TUI).
- Transaction Management: Add, view, edit, and delete income and expenses.
- Recurring Transaction: Setup transactions that automatically recur at select frequencies.
- Advanced Filtering: Filter transactions by date, description, category, type, and amount (including advanced multi-field filters).
- Smart Date Navigation: Use
+/-to adjust dates by day, andShift + Left/Rightto jump by month in date fields. - Categorization: Hierarchical categories and subcategories for all transactions, now managed in-app and stored in a local SQLite catalog.
- Fuzzy Search: Toggleable option to fuzzy search categories/subcategories for quick selection.
- Summaries & Charts: Visualize your spending/income by month and by category, with interactive charts and tables.
- Budget Tracking: Set a monthly target budget, assign per-category expense budgets, and review progress in the dedicated budget view.
- Data Persistence: Transactions are stored in a configurable CSV file, categories are stored in a local SQLite database, and app preferences are saved in a config file.
- Cross-Platform: Runs on Windows, macOS, and Linux.
- Keyboard-Driven: Fully operable with keyboard shortcuts for every action and mode. Press
Ctrl+Hfor a help menu. - Update Checker: Automatically checks for updates on startup and notifies you of new versions.
- Robust CSV Support: Flexible date parsing, easy import/export, and Excel compatibility.
- High Precision: Uses decimal arithmetic (no floating point errors) for accurate financial calculations.
- Built with Rust: Safety, speed, and reliability.
The easiest way to install on Linux, macOS, or Windows (if you have Rust installed). One command, no cloning required:
cargo install budget_tracker_tuiAfter installation, the Budget_Tracker command is immediately available in your terminal.
Don't have Rust? Install it in seconds at rustup.rs — it includes
cargo.
Optional tip: Set up a short alias for even quicker access:
# Add to your .bashrc / .zshrc / PowerShell profile
alias bt='Budget_Tracker'Then just type bt to launch the app.
If you are on Windows and prefer not to install Rust, you can download and run the latest installer directly from the Releases page — no toolchain needed.
Note: I do not have a Windows developer licence, so it will show as an unknown publisher.
Still working on adding support for direct downloads via some Linux package managers.
Build and run from source (recommended to just use crates.io):
# Clone the repository
git clone https://github.com/Feromond/budget_tracker_tui
cd budget_tracker_tui
# Build (use --release for an optimized build)
cargo build --release
# Run
./target/release/Budget_TrackerInstall globally from source:
cd budget_tracker_tui
cargo install --path .- Launch the app:
Budget_Tracker(orbtif you set up the alias) - Add a transaction: Press
a, fill in the fields, and pressEnterto save. - Navigate: Use
↑/↓to move between transactions,PageUp/PageDownto jump by pages,Ctrl+↑/Ctrl+↓to jump to first/last transaction. - Sort transactions: Press
1-6to sort by Date, Description, Category, Subcategory, Type, or Amount respectively. - Manage transactions: Press
eto edit,dto delete,fto filter,rto manage recurring transactions. - View summaries: Press
sfor monthly summary,cfor category summary, andbfor the budget view. - Change settings: Press
oto open settings (change the transactions CSV path, SQLite database path, target budget, and manage categories). - Quit: Press
qorEsc. - Help: Press
Ctrl+Hat any time to view the keybindings menu for the current mode.
- Data File Path:
- The path to your
transactions.csvfile is configurable in-app (pressofor settings). - Default locations: - Linux:
$XDG_DATA_HOME/BudgetTracker/transactions.csv(usually~/.local/share/BudgetTracker/transactions.csv) - macOS:~/Library/Application Support/BudgetTracker/transactions.csv- Windows:%APPDATA%\BudgetTracker\transactions.csv(e.g.,C:\Users\<YourUsername>\AppData\Roaming\BudgetTracker\transactions.csv) - Cross-Device Sync: You can set your data file path to a cloud-synced folder (iCloud, Google Drive, Dropbox, OneDrive, etc.) to automatically sync your budget data across multiple devices. Just point the data file path to a location within your cloud storage folder!
- The path to your
- Database Path:
- The category catalog is stored in a SQLite database file, configurable in-app from Settings.
- By default, the database file is named
budget.dband is placed alongside your current transactions CSV file. - On first run with a new database, the app seeds it with the default category catalog.
- Manage Categories:
- From Settings, use Manage Categories to open the category catalog and add, edit, or delete categories/subcategories.
- Expense categories can optionally store a per-category target budget for use in the budget view.
- Target Budget:
- Set a monthly target budget in settings. This is used in the monthly summary and budget view.
- Hourly Rate:
- (Optional) Set your hourly earning rate to toggle a view that shows transaction costs in "hours worked".
- Fuzzy Search:
- Enable or disable the fuzzy search input for category selection (toggle in Settings menu
o).
- Enable or disable the fuzzy search input for category selection (toggle in Settings menu
- Config File:
- The application's settings are saved in a
config.jsonfile, which is stored in your OS's config directory:- Linux:
~/.config/BudgetTracker/config.json - macOS:
~/Library/Application Support/BudgetTracker/config.json - Windows:
C:\Users\<YourUsername>\AppData\Roaming\BudgetTracker\config.json
- Linux:
- This is separate from the data file location, which is in your OS's data directory (see above).
- The application's settings are saved in a
- CSV Columns:
date, description, amount, transaction_type, category, subcategory - Date Format: Flexible! Accepts
YYYY-MM-DD,YYYY/MM/DD,DD/MM/YYYY, orDD-MM-YYYY. - Transaction Type:
IncomeorExpense(case-insensitive, also acceptsi/e) - Category/Subcategory: Transaction rows should reference categories that exist in the SQLite category catalog. You can manage that catalog in-app from Settings.
- Import/Export: You can edit the transaction CSV in Excel/LibreOffice or import from other tools (just match the columns and use valid categories). SQLite support currently backs category data; transaction storage remains CSV for now.
- Data Safety: The app will not overwrite your transaction CSV unless you save a transaction, close the program, or change settings. Category edits are written to the SQLite database.