BillTracker/roadmap.md

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_settings table (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_paid column + 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-excel exports 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:

  • Esc closes any open modal/dialog (via Radix Dialog default)
  • Cmd+K / Ctrl+K opens 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