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.
If you are on Windows, you can download and run the latest installer for a quick and easy setup. This is the simplest way to get started on Windows—no Rust or Cargo required! (NOTE: I do not have a windows developer licence so it will be an unknown publisher)
- Rust (includes
cargo) - No separate SQLite installation is required for normal builds; the app bundles SQLite through
rusqlite.
Still working on adding support for direct downloads via some linux package managers
Build and Run Manually:
# Clone the repository
git clone https://github.com/Feromond/budget_tracker_tui
cd budget_tracker_tui
# Build the project (use --release for optimized build)
cargo build --release
# Run the executable
./target/release/Budget_TrackerInstall Globally with Cargo (Recommended for Linux/macOS):
# Navigate to the project directory
cd budget_tracker_tui
# Install the binary to Cargo's bin directory
cargo install --path .After installation, the Budget_Tracker command should be available in your terminal directly.
Optional Tip: For even quicker access, set up a shell alias:
# Example for bash/zsh (add to your .bashrc or .zshrc)
alias bt='Budget_Tracker'Then, you can just type bt to launch the app.
- 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.