5.9 KiB
Bill Tracker Roadmap
This document tracks the planned features and enhancements for Bill Tracker, organized by priority and implementation status.
🟡 MEDIUM Priority Items
🟡 Projected Cash Flow — MEDIUM
Status: Not implemented
Description: Show users what's coming: "You'll have $X left before the 15th", "Upcoming bills before next paycheck", and a "Safe-to-spend" estimate based on starting amount, unpaid bills, and scheduled income. Fits naturally with the existing 1st/15th bucket model.
Scope:
- "Remaining after bills" projection per bucket (1st half / 15th half)
- "Upcoming bills before next paycheck" list
- "Safe-to-spend" estimate based on starting balance minus unpaid bills
- Scheduled income support (payday amounts)
Rationale:
- The 1st/15th bucket model is already built — cash flow projection is the natural next step
- Most valuable feature for day-to-day money management
- Turns a bill tracker into a financial planning tool
Implementation Notes:
- Requires user to enter starting balance and payday amounts (new settings fields)
- Calculate: starting amount - unpaid bills due before next payday = safe-to-spend
- Files to modify:
TrackerPage.jsx,routes/tracker.js,user_settingstable (new fields) - Estimated effort: 8-10 hours
🟡 Recurring Payment Rules — MEDIUM
Status: Partially implemented
Description:
Auto-mark certain bills as paid on due date if autodraft_status = assumed_paid. Or create suggested payments awaiting confirmation. Good for autopay-heavy users.
Scope:
- Bills with autopay/autodraft get a "suggested payment" on their due date
- User confirms or dismisses the suggestion
- Auto-mark option: bills can be set to automatically mark as paid on due date
Implementation Status:
- ✅
auto_mark_paidcolumn + bill edit checkbox - ✅
applyAutopaySuggestions()in trackerService handles auto-mark + suggestion generation - ✅ Confirm (
POST /api/payments/autopay-suggestions/:billId/confirm) and dismiss (POST /.../dismiss) endpoints - ✅ Suggestion UI in TrackerPage with badge + confirm/dismiss buttons
- ❌ No proactive suggestion engine — only runs when tracker loads
- ❌ No scheduled task/cron to evaluate bills and create suggestions on due date
Remaining Work:
- Implement scheduled task/cron to evaluate bills and create suggestions on due date
- Estimated effort remaining: 2-3 hours
🟡 Calendar Agenda Mode — MEDIUM
Status: Not implemented
Description: Replace the month-grid calendar with an agenda view: Today / This Week / Next 14 Days. Group bills by "needs action," "autopay," "already paid." More useful when actually paying bills.
Rationale:
- Month grids are pretty but not actionable
- Agenda mode answers "what do I need to do right now?"
- Groups by status makes it immediately clear what needs attention
Implementation Notes:
- New view toggle on CalendarPage: Grid vs Agenda
- Agenda shows: Overdue → Today → This Week → Next 14 Days
- Each group sorted by due date, with action status badges
- Files to modify:
CalendarPage.jsx,routes/calendar.js - Estimated effort: 6-8 hours
🟡 Filtered Exports — MEDIUM
Status: Not implemented
Description: Export only utilities, debts, overdue, date range, tax-relevant categories. Currently exports everything with no filtering.
Rationale:
- Users need "all Q1 utility bills" or "overdue payments this year" for reconciliation and tax prep
/api/export/user-excelexports everything — no query params for date range, category, or status
Implementation Notes:
- Add query params to export endpoints:
category_id,start,end,status(paid/unpaid/overdue) - Files to modify:
routes/export.js,client/pages/DataPage.jsx - Estimated effort: 6 hours
🔵 LOW Priority Items
🔵 Payment Method Tracking and Summary — LOW
Status: Not implemented
Description:
The payments table has a method column (free-text) but no way to see "how much did I pay via autopay vs manual vs credit card this month."
Implementation Notes:
- Standardize payment methods: enum or controlled list (autopay, bank_transfer, credit_card, check, cash, other)
- Add payment method breakdown to analytics or summary page
- Files to modify:
routes/payments.js,AnalyticsPage.jsx, schema migration - Estimated effort: 4-6 hours
🔵 No Keyboard Navigation or Shortcuts — LOW
Status: Partially implemented
Description:
Only a skip link exists for keyboard accessibility. No Cmd+K to find a bill, no Esc to close modals, no arrow keys to navigate the tracker grid.
Implementation Status:
- ✅
Esccloses any open modal/dialog (via Radix Dialog default) - ✅
Cmd+K/Ctrl+Kopens command palette (CommandPalette.jsx) - ❌ Arrow keys navigate tracker rows when grid is focused
Remaining Work:
- Implement arrow key navigation for tracker rows
- Estimated effort: 1-2 hours
🔵 Add comprehensive unit and integration tests
Status: Not implemented
Description:
Currently no unit tests exist for components or hooks. The only testing is functional tests in test-functional.js.
Implementation Notes:
- Set up Jest + React Testing Library (or vitest)
- Test key components: BillModal, TrackerPage row, BillsTableInner
- Test hooks: useAuth, custom form hooks
- Test utility functions in
client/lib/utils.js - Estimated effort: 8-12 hours for baseline coverage
💭 NICE TO HAVE Items
💭 Add consistent form state management pattern
Status: Not implemented
Description:
Form state management is inconsistent across components. Some use useState for each field, others use form libraries.
Implementation Notes:
- Consider react-hook-form for complex forms
- Create reusable form field components (InputField, SelectField, etc.)
- Standardize validation approach
- Estimated effort: 4-6 hours