# CashFlo - TODO & Roadmap ## Planned Features ### Transfers - [ ] Implement account-to-account transfers - [ ] Create `transfers` table with transfer metadata - [ ] Add `transfer_id` column to transactions table (FK) - [ ] UI: Transfer dialog (from/to account, amount, date) - [ ] Create paired transactions automatically - [ ] Cascade delete when transfer is removed - [ ] Visual indicator in transaction grid (⇄ symbol) - [ ] Exclude transfers from spending reports **Design Decision:** Use separate `transfers` table (Option C): ```sql transfers table: - id INTEGER PRIMARY KEY - date TEXT - amount REAL - from_account TEXT - to_account TEXT - description TEXT transactions table: - transfer_id INTEGER (nullable, FK to transfers) ``` ### Transaction Management - [ ] Drag-and-drop reordering of transactions within same date - Use `sort_order` field that already exists in database - Visual feedback: highlight valid drop zone (same date only) - Update sort_order values when dropped - Prevents dragging across different dates - Shows where transaction will be inserted ### User Experience & Documentation - [ ] Comprehensive tooltips on all buttons/fields - [ ] Empty state messages ("No transactions yet...") - [ ] Status bar contextual help - [ ] Welcome dialog on first run - [ ] Keyboard shortcut cheat sheet (Help menu) - [ ] Sample data / example budget loader - [ ] User guide / documentation page ### Debt & Loan Tracking - [ ] Highlight when recurring payments end (debt payoff visualization) - [ ] Show "cash flow improvement" when debts are paid off - [ ] "Days until debt-free" counter/view - [ ] Account types: Asset vs Liability - [ ] Net worth dashboard (Assets - Liabilities) ### Account Management - [ ] First-class Account table (id, name, account_type, is_active) - [ ] Account management UI in Preferences - [ ] Migration: auto-create accounts from existing transaction strings - [ ] Update combo boxes to use accounts table - [ ] Keep simple: no interest rates, no starting balances (use transactions) ### Attachments / Document Storage - [ ] Store scanned receipts/documents as BLOBs in SQLite - [ ] Attachment viewer/manager per transaction - [ ] File upload dialog - [ ] Display attached file count in grid ### AI Integration - [ ] MCP server for AI assistant integration - [ ] HTTP REST API in Qt app (QHttpServer) - [ ] Endpoints: GET/POST transactions, recurring rules - [ ] Python MCP server that calls REST API - [ ] Enable AI to import bank statements, categorize transactions - [ ] "What-if" scenario analysis via AI queries ### Scenario Planning / What-If Analysis - [ ] "New Scenario Copy" menu item (enhanced Save As) - [ ] Optional: Toggle checkboxes on recurring rules (enable/disable in projections) - [ ] Optional: Named scenarios with side-by-side comparison ## Ideas for Discussion - Double-entry bookkeeping? (Probably overkill for personal finance) - Split transactions? (e.g., loan payment = principal + interest) - CSV import wizard - Budget categories with spending limits - Reports and charts - Mobile app / web interface ## Completed Features - ✅ Transaction management (add, edit, delete) - ✅ Recurring rules with multiple frequencies - ✅ Projection generation - ✅ Reconciliation system with checkpoints - ✅ Date range filtering - ✅ Running balance calculations - ✅ Save As (for creating copies) - ✅ Export to CSV - ✅ Multi-filter system (account, recurring rule, search text) - ✅ Period collapse/expand functionality - ✅ Escape key to deselect - ✅ Sortable recurring rules table with numeric sorting - ✅ Delete preserves selection (moves to next row) - ✅ Charts tab with balance trend visualization - ✅ Multi-account line charts - ✅ Hover tooltips showing exact balance at date - ✅ Mouse wheel zoom on charts - ✅ Auto-fit chart axes to data range - ✅ Independent chart date range controls ### UI 1. need better interface for editing, perhaps on the right hand side? ideally it needs to be fast. Quick Entry/Edit is REQUIRED for a good tool. right now its a-lada clickin currency input needs to be awesome, like a mask that has shown: $ -13,000.00 typed: 13000 a little smarter right? same for date dialogs and stuff, it all needs to be very quick and keyboardy. 2. need to make the grid editable / and saving. To say, change a tx from estimated to actual or change the date etc.