| 01-foundation-and-collection |
03 |
ui |
| react |
| tanstack-query |
| zustand |
| tailwind |
| combobox |
| slide-out-panel |
| crud-ui |
|
| phase |
provides |
| 01-foundation-and-collection/01 |
Project scaffold, shared types, TanStack Router routes |
|
| phase |
provides |
| 01-foundation-and-collection/02 |
Item/category/totals API endpoints, image upload endpoint |
|
|
| Complete collection UI with card grid grouped by category |
| Slide-out panel for add/edit items with all fields |
| Category picker combobox with search and inline creation |
| Confirm delete dialog |
| Image upload component with preview |
| Sticky totals bar with global weight/cost/count |
| TanStack Query hooks for items, categories, and totals |
| Zustand UI store for panel and dialog state |
| API fetch wrapper with error handling |
|
|
| added |
patterns |
|
|
| tanstack-query-hooks |
| zustand-ui-store |
| fetch-wrapper |
| combobox-aria |
| slide-out-panel |
|
|
| created |
modified |
| src/client/lib/api.ts |
| src/client/lib/formatters.ts |
| src/client/hooks/useItems.ts |
| src/client/hooks/useCategories.ts |
| src/client/hooks/useTotals.ts |
| src/client/stores/uiStore.ts |
| src/client/components/TotalsBar.tsx |
| src/client/components/CategoryHeader.tsx |
| src/client/components/ItemCard.tsx |
| src/client/components/ConfirmDialog.tsx |
| src/client/components/ImageUpload.tsx |
| src/client/components/CategoryPicker.tsx |
| src/client/components/SlideOutPanel.tsx |
| src/client/components/ItemForm.tsx |
|
| src/client/routes/__root.tsx |
| src/client/routes/index.tsx |
|
|
| ItemForm converts dollar input to cents for API (display dollars, store cents) |
| CategoryPicker uses native ARIA combobox pattern with keyboard navigation |
| Empty state encourages adding first item with prominent CTA button |
|
| API wrapper: all fetch calls go through apiGet/apiPost/apiPut/apiDelete/apiUpload in lib/api.ts |
| Query hooks: each data domain has a hook file with query + mutation hooks that handle cache invalidation |
| UI store: Zustand store manages panel mode, editing item ID, and confirm dialog state |
| Component composition: Root layout owns panel/dialog/FAB, collection page owns grid and grouping |
|
| COLL-01 |
| COLL-02 |
| COLL-03 |
| COLL-04 |
|
3min |
2026-03-14 |