Show HN: Bagels – TUI Expense Tracker

Bagels Expense Tracker

Bagels is a powerful terminal-based expense tracker designed to help users manage their finances with ease. This Text User Interface (TUI) application allows you to track and analyze your money flow using convenience-oriented features and a comprehensive interface.

Why Use a Terminal Expense Tracker?

Managing expenses daily rather than on-the-go simplifies habit formation and accuracy. Using the terminal provides a fast, local data management solution.

Key Features

  • Accounts, (Sub)Categories, Splits, Transfers, Records
  • Templates for Recurring Transactions
  • Quick Entry with Number Keys
  • Clear Layout with Togglable Splits
  • External Account Transfers
  • “Jump Mode” Navigation
  • Reduced Input Fields Powered by Modes
  • Custom Keybindings and Defaults
  • Filtering by Label, Amount, Category
  • Spending Graphs and Budgeting Tools

Installation Instructions

For MacOS:

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv tool install --python 3.13 bagels

For Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uv tool install --python 3.13 bagels

Usage Overview

Use the following commands to operate the Bagels expense tracker:

  • bagels – Start Bagels
  • bagels --at "./" – Start Bagels with data at the current directory
  • bagels locate database – Find database file path
  • bagels locate config – Find config file path

For the best experience, use modern terminals like Ghostty on MacOS or Windows Terminal on Windows.

Upgrade Process

Update Bagels with the following command:

uv tool upgrade bagels

Development Setup

git clone https://github.com/EnhancedJax/Bagels.git
cd Bagels
uv run pre-commit install
mkdir instance
uv run bagels --at "./instance/"
uv run textual run --dev "./src/bagels/textualrun.py"
uv run textual console -x SYSTEM -x EVENT -x DEBUG -x INFO

Use the black formatter for code formatting.

Roadmap

  • Budgeting Features
  • Enhanced Insight Displays
  • Daily Check-Ins
  • Pagination for Records

Backlog Features

  • Processing Status for Transactions
  • Record Flags for Future Insights
  • Code Review and Repayment Reminders
  • Add Tests and Bank Sync

Attributions

Bagels is heavily inspired by other posting methods and built with Textual. The name ‘Bagels’ comes from a personal love for bagels.