A modern Terminal User Interface (TUI) application for tracking personal expenses and budgeting, built with Python and Textual.
- ๐ Intuitive TUI Interface - Modern, responsive terminal-based UI
- ๐ณ Account Management - Multiple account types (Cash, Bank, Credit Card, Savings)
- ๐ Transaction Tracking - Income, Expenses, and Transfers between accounts
- ๐ท๏ธ Category Management - Organized expense categories with visual indicators
- ๐ Financial Insights - Weekly summaries, daily trends, and category breakdowns
- ๐จ Multiple Themes - Switch between different color schemes
- ๐พ Local Storage - SQLite database for secure, offline data storage
UV is the fastest Python package installer and resolver.
# Install UV if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install Budgt.sh
uv pip install budgt-sh
# Run the application
budgt# Add the tap (once available)
brew tap yourusername/budgt-sh
# Install
brew install budgt-sh
# Run the application
budgt# Install pipx if you haven't already
python -m pip install --user pipx
python -m pipx ensurepath
# Install Budgt.sh in isolated environment
pipx install budgt-sh
# Run the application
budgt# Install from PyPI
pip install budgt-sh
# Run the application
budgt# Clone the repository
git clone https://github.com/yourusername/budgt.sh.git
cd budgt.sh
# Install with UV (recommended)
uv pip install -e .
# Or install with pip
pip install -e .
# Run the application
budgt- Python 3.8 or higher
- Terminal with color support (most modern terminals)
a- Add new accountt- Add new transactionShift+T- Transfer money between accountsCtrl+T- Toggle themeLeft/Right- Expand account/transaction panelsr- Reset layout to defaultq- Quit application
- Create accounts first using
a- add your bank accounts, credit cards, etc. - Add transactions with
t- record income and expenses - Transfer money between accounts with
Shift+T - View insights in the bottom panel for spending analysis
Your financial data is stored locally in an SQLite database (budgt.db) and never transmitted over the network.
Restrict database access to your user only:
chmod 600 budgt.dbRegular encrypted backups are recommended:
# Create encrypted backup
gpg -c budgt.db
# Restore from backup
gpg -d budgt.db.gpg > budgt.db- Use full disk encryption on your device
- Keep your system updated with security patches
- Use strong user account passwords
- Consider encrypted home directory for additional protection
- โ No network communication - purely offline application
- โ No telemetry or tracking - your data stays private
- โ No cloud dependencies - complete local control
- โ Open source - transparent and auditable code
The application includes comprehensive input validation:
- Amount limits (max $999M per transaction)
- Description length limits (200 characters)
- Account name validation (100 characters max)
- Duplicate account name prevention
- Positive amount enforcement for transfers
- Textual - Modern TUI framework
- SQLAlchemy - Database ORM with security features
- Rich - Terminal styling and formatting
- PyYAML - Configuration file parsing
- SQLite - Lightweight, serverless database
- SQL Injection Protection - SQLAlchemy ORM prevents injection attacks
- Safe YAML Loading - Uses
yaml.safe_load()to prevent code execution - Input Sanitization - All user inputs are validated and sanitized
- Error Handling - Graceful error handling without information disclosure
The application uses a normalized SQLite database with the following main tables:
accounts- Account information and balancestransactions- All financial transactionsexpenses- Legacy expense records (backward compatibility)
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
- Follow secure coding practices
- Validate all user inputs
- Use parameterized queries (SQLAlchemy ORM)
- Avoid hardcoding sensitive information
- Write tests for security-critical functions
This project is open source and available under the MIT License.
If you encounter any issues:
- Check that your Python version is 3.8+
- Verify all dependencies are installed
- Ensure database file permissions are correct
- Check the application logs for error details
For bug reports and feature requests, please open an issue on GitHub.
- Keep your system and dependencies updated
- Use strong authentication on your user account
- Enable disk encryption
- Create regular encrypted backups
- Be cautious when sharing your computer or repository
๐ Data Ownership: You maintain complete control and ownership of your financial data. The application never transmits data externally.
