Skip to content

JMoogs/budgeter-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

budgeter-rs

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.

How it works

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.

Getting started

Requires Rust ≥ 1.85.

git clone <repo>
cd budgeter-rs
cargo build --release

Create a budget:

./target/release/budgeter-rs new 2025-12-31 --starting-balance 1500 --savings 2000

Show today's summary:

./target/release/budgeter-rs show

Open the REPL:

./target/release/budgeter-rs

REPL commands

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

Activity types

# 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

Transaction types

  • One time
  • Monthly
  • Monthly standing order (skips weekends and UK bank holidays)
  • Every 30 days
  • Yearly

Data storage

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\

About

Rust version of budgeter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors