Skip to content

015 bike expense tracking#37

Merged
aligneddev merged 18 commits intomainfrom
015-bike-expense-tracking
Apr 20, 2026
Merged

015 bike expense tracking#37
aligneddev merged 18 commits intomainfrom
015-bike-expense-tracking

Conversation

@aligneddev
Copy link
Copy Markdown
Owner

No description provided.

aligneddev added 18 commits April 17, 2026 18:29
…dpoints, and US2 service tests

- Add ExpenseEntryPage component with client-side validation (T032-T034)
- Implement recordExpense() in expenses-api.ts (T035)
- Add /expenses/entry route in App.tsx (T036)
- Add 'Record Expense' and 'Expense History' nav links in AppHeader (T037)
- Add EditExpenseServiceTests covering concurrency, version increment, validation (T039/T040)
- Add DeleteExpenseServiceTests covering tombstone and already-deleted guard (T041/T042)
- Add PUT/DELETE /api/expenses/{id} endpoint implementations (T045/T046)
- Add PUT/DELETE /api/expenses/{id}/receipt endpoints for receipt upload/remove (T047/T048)
- Fix receipt path traversal security: block stored paths containing .. or absolute segments (T031C)
- Add ExpenseHistoryPage test scaffold for TDD gate (T049)
…e filter (T050-T055)

- ExpenseHistoryPage.tsx: table with inline edit/delete, date-range filter, filtered total
- ExpenseHistoryPage.css: responsive layout matching existing expense page style
- expense-page.helpers.ts: formatExpenseDate, formatCurrency utilities
- expenses-api.ts: added getExpenseHistory, editExpense, deleteExpense, uploadReceipt, deleteReceipt
- App.tsx: added /expenses/history route
- Nav link for Expense History already present (T037)
- All 6 expense page unit tests pass
@aligneddev aligneddev merged commit 916bfce into main Apr 20, 2026
1 check passed
@aligneddev aligneddev deleted the 015-bike-expense-tracking branch April 20, 2026 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant