A personal finance tracker with a productivity gamification layer. Log study sessions and activities to earn a spendable cash buffer on top of your regular budget.
Set a budget end date and starting balance. The engine calculates a daily spending allowance that makes the money last until that date. Separately, you earn a productivity cash buffer by logging activities — the buffer is capped at £500 and the point-to-cash conversion rate decreases as the buffer fills, so there's always an incentive to spend it down rather than stockpile.
All monetary values are stored as integer pence to avoid floating point errors.
Requires Rust ≥ 1.85.
git clone <repo>
cd budgeter-rs
cargo build --releaseCreate a budget:
./target/release/budgeter-rs new 2025-12-31 --starting-balance 1500 --savings 2000Show today's summary:
./target/release/budgeter-rs showOpen the REPL:
./target/release/budgeter-rs| Command | Description |
|---|---|
help |
List all commands |
show / summary |
Today's income, expenses, and productivity stats |
balance |
Savings, investments, buffer, and end date |
net worth |
Total financial position across all accounts |
transactions |
All transactions sorted by date |
delete <N> |
Delete transaction N |
upcoming [days] |
Upcoming transactions in the next N days (default 30) |
search <term> |
Search transactions by name or note |
categories |
Income and spending totals by category |
history |
Monthly income and expense breakdown |
forecast |
Daily spending allowance from today to end date |
activities |
All logged productivity activities |
point stats [date] |
Point conversion breakdown for a given day |
income |
Add an income transaction |
expense |
Add an expense or subscription |
activity |
Log a productivity activity and earn cash |
spend |
Spend from your productivity buffer |
savings deposit |
Move cash into savings |
savings withdraw |
Move cash out of savings |
investments deposit |
Move cash into investments |
investments withdraw |
Move cash out of investments |
set end date |
Change the budget end date |
export |
Export all transactions to a CSV file |
exit / quit / :q |
Exit |
| # | Type | Points |
|---|---|---|
| 1 | Anki | 1 pt/review, 5× for new cards, 5× for writing mode |
| 2 | Reading | max(chars/1000 × 50, hours × 350) |
| 3 | Listening | hours × 150, 2× audio-only, 0.5× background |
| 4 | Speaking | hours × 50 |
| 5 | Writing | max(chars/1000 × 200, hours × 400) |
| 6 | LeetCode | easy 50 / medium 100 / hard 200, 2× for daily challenge |
| 7 | Lecture | hours × 150 |
| 8 | Programming | hours × 350 |
| 9 | Exercise | light 75 / moderate 175 / intense 300 pts/hr |
| 10 | Meditation | hours × 100 |
| 11 | Typing | hours × 100 + 2 pts per WPM above 40 |
| 12 | Music | hours × 200 |
- One time
- Monthly
- Monthly standing order (skips weekends and UK bank holidays)
- Every 30 days
- Yearly
The budget is saved as JSON in the platform data directory:
- macOS:
~/Library/Application Support/Budgeter/Budgeter-rs/ - Linux:
~/.local/share/Budgeter/Budgeter-rs/ - Windows:
%APPDATA%\Budgeter\Budgeter-rs\