Dave is a command-line tool for tracking debts and visualizing your path to becoming debt-free using the snowball or avalanche method.
- Multiple Payoff Strategies: Snowball (lowest balance first), Avalanche (highest interest first), or Manual ordering
- Payment Tracking: Full payment history with interest/principal breakdown, optional custom payment dates
- Payoff Projections: See exactly when each debt will be paid off and your overall debt-free date
- Auto-Snowball: When you pay off a debt, its minimum payment automatically adds to your snowball amount
- Order Number Support: Use position numbers (1, 2, 3) or names for all commands
- Beautiful Terminal UI: Clean, colorful tables powered by Lipgloss with order numbers, totals, and projections
- SQLite Storage: All data stored locally in
~/.dave/debts.db - Hidden Paid Debts: Paid-off debts are automatically hidden from view but preserved in the database
- Reset Command: Clear all debts and start fresh with a single command (with confirmation prompt)
go build -o dave.exeOr add to your PATH for system-wide access.
# Add your first debt
dave add "Credit Card" 5000 18.5 150
# Add more debts
dave add "Car Loan" 15000 5.5 350
dave add "Student Loan" 25000 4.2 200
# Set extra monthly payment (snowball amount)
dave snowball 500
# View your debt table (default command)
dave
# Make a payment using debt name
dave pay "Credit Card" 1000
# Or use the order number from the table
dave pay 1 1000
# Backdate a payment
dave pay 2 500 2024-11-15
# Switch to avalanche mode
dave mode avalancheDisplay the debt table with projections. This is the default command.
Add a new debt.
creditor: Name of the creditor (e.g., "Credit Card")balance: Current balancerate: Annual Percentage Rate (APR)payment: Minimum monthly payment
Example: dave add "Visa" 3500 19.99 75
Remove a debt by name or order number.
Examples:
dave remove "Visa"dave remove 2
Record a payment on a debt. Updates the balance and tracks interest vs principal. Optionally backdate the payment.
When a debt is fully paid off, its minimum payment is automatically added to your snowball amount!
Examples:
dave pay "Visa" 500(payment today)dave pay 1 500(using order number)dave pay 2 750 2024-11-15(backdated payment)
Set the extra monthly payment amount to apply on top of minimum payments.
Example: dave snowball 500
Change the debt sorting/prioritization mode:
- snowball: Pay off smallest balance first (psychological wins)
- avalanche: Pay off highest interest rate first (mathematically optimal)
- manual: Use custom ordering
Example: dave mode avalanche
Update the APR for a debt.
Examples:
dave adjust-rate "Visa" 15.99dave adjust-rate 1 15.99
Manually adjust the current balance (for corrections).
Examples:
dave adjust-amount "Visa" 3400dave adjust-amount 2 3400
Change the priority order (manual mode only).
Examples:
dave adjust-order "Student Loan" 1dave adjust-order 3 1
Clear all debts, payment history, and reset settings to defaults. This action cannot be undone.
You will be prompted for confirmation before deletion:
- Deletes all debts
- Deletes all payment history
- Resets mode to snowball
- Resets snowball amount to $0.00
Example: dave reset
Warning: This is a destructive operation. All data will be permanently deleted.
The debt table shows:
- #: Order number (use this in commands instead of typing the full name)
- Creditor: Name of the debt
- Original: Starting balance
- Current: Current balance
- Rate: Annual Percentage Rate (APR)
- Payment: Minimum monthly payment
- Interest: Projected total interest to be paid
- Payoff: Estimated payoff date
- Months: Months until paid off
- Years: Years until paid off (decimal format)
The table also displays:
- DEBT FREE DATE: When all debts will be paid off
- Total Debt: Sum of all current balances
- Totals row: Summary of all debts
- Footer: Current mode, monthly payment total, snowball amount, and total payment
Note: Paid-off debts (balance = $0) are automatically hidden from the table but remain in the database.
- List debts from smallest to largest balance
- Pay minimum on all debts
- Apply extra payment (snowball amount) to the smallest debt
- When a debt is paid off, add its minimum payment to the snowball amount
- Repeat until debt-free!
Same as snowball, but prioritize by highest interest rate instead of smallest balance. Mathematically optimal but may take longer to see first payoff.
Dave simulates your monthly payments with compound interest to calculate:
- Months to pay off each debt
- Total interest paid on each debt
- Individual payoff dates
- Overall debt-free date
All data is stored in ~/.dave/debts.db (SQLite database) with three tables:
- debts: Current debt information
- payments: Full payment history
- settings: Current mode and snowball amount
# Start with no extra payment
dave add "Credit Card" 5000 18.5 150
# Shows: 48 months to payoff, $2072 in interest
# Add $500 snowball
dave snowball 500
# Shows: 9 months to payoff, $364 in interest
# Saves $1708 in interest and 39 months!# Snowball mode (smallest balance first)
dave mode snowball
dave
# Avalanche mode (highest rate first)
dave mode avalanche
dave
# Manual mode with custom priority
dave mode manual
dave adjust-order "Student Loan" 1Requirements:
- Go 1.25 or later
go mod download
go build -o dave.exeSee LICENSE file for details.
