Commit Graph
99 Commits
Author SHA1 Message Date
makiolajandClaude Opus 4.6 4d0452b7b3 fix: handle better-sqlite3 native build in Docker and skip in CI
CI / ci (push) Failing after 8s
Install python3/make/g++ in Dockerfile deps stage for drizzle-kit's
better-sqlite3 dependency. Use --ignore-scripts in CI workflows since
lint, test, and build don't need the native module.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 19:41:55 +01:00
makiolajandClaude Opus 4.6 8ec96b9a6c fix: use correct branch name "Develop" in CI workflow triggers
CI / ci (push) Failing after 29s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 19:39:54 +01:00
makiolajandClaude Opus 4.6 48985b5eb2 feat: add Docker deployment and Gitea Actions CI/CD
Add multi-stage Dockerfile, docker-compose with persistent volumes,
and Gitea Actions workflows for CI (lint/test/build) and releases
(tag, Docker image push, changelog). Support DATABASE_PATH env var
for configurable SQLite location to enable proper volume mounting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 19:36:23 +01:00
makiolajandClaude Opus 4.6 37c4272c08 chore: add CLAUDE.md, initial Drizzle migration, and update gitignore
Add project instructions for Claude Code, the initial database migration,
and ignore the .claude/ local config directory.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:57:40 +01:00
makiolajandClaude Opus 4.6 ad941ae281 chore: disable research workflow step in planning config
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:48:32 +01:00
makiolajandClaude Opus 4.6 87fe94037e feat: add external link confirmation dialog for product URLs
Show an external link icon on ItemCard and CandidateCard that opens a
confirmation dialog before navigating to product URLs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:48:27 +01:00
makiolajandClaude Opus 4.6 7c3740fc72 refactor: replace remaining emojis with Lucide icons
Replace all raw emoji characters in dashboard cards, empty states,
and onboarding wizard with LucideIcon components for visual consistency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:47:50 +01:00
makiolajandClaude Opus 4.6 407fa45280 chore: complete v1.1 milestone — Fixes & Polish
Archive v1.1 artifacts (roadmap, requirements, phases) to milestones/.
Evolve PROJECT.md with shipped requirements and new key decisions.
Reorganize ROADMAP.md with collapsed milestone groupings.
Update retrospective with v1.1 lessons.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:16:27 +01:00
makiolaj 414f2b726e docs: capture todo - Replace planning category filter select with icon-aware dropdown 2026-03-15 18:09:55 +01:00
makiolaj dbd217b9e5 docs(phase-6): complete phase execution 2026-03-15 18:04:26 +01:00
makiolajandClaude Opus 4.6 2b8061d958 docs(06-03): complete display component icon migration plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:00:45 +01:00
makiolajandClaude Opus 4.6 ce4654b507 docs(06-02): complete category icon UI components plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:59:16 +01:00
makiolajandClaude Opus 4.6 9fcb07c96b chore(06-03): update auto-generated route tree and clean up emoji references
- Route tree regenerated after icon migration changes
- Old EmojiPicker.tsx and emojiData.ts files removed (were untracked)
- Zero emoji references remain in src/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:58:57 +01:00
makiolajandClaude Opus 4.6 570bcea5c9 feat(06-02): replace EmojiPicker with IconPicker across all category components
- CategoryPicker shows LucideIcon prefix and uses IconPicker for inline create
- CategoryHeader displays LucideIcon in view mode and IconPicker in edit mode
- OnboardingWizard uses IconPicker for category creation step
- CreateThreadModal drops emoji from category select options
- Fixed categoryEmoji -> categoryIcon in routes and useCategories hook

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:57:56 +01:00
makiolajandClaude Opus 4.6 615c8944c4 feat(06-03): update display components to use categoryIcon with LucideIcon
- Rename categoryEmoji to categoryIcon in ItemCard, CandidateCard, ThreadCard, ItemPicker
- Import and render LucideIcon at appropriate sizes (36px placeholder, 14-16px badges)
- Update hook interfaces to match server API (categoryIcon instead of categoryEmoji)
- Rename iconData.ts to iconData.tsx (contains JSX)
- Update useCategories mutation type to use icon instead of emoji

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:57:21 +01:00
makiolajandClaude Opus 4.6 59d1c891f9 feat(06-02): create IconPicker component with search and group tabs
- Portal-based popover with Lucide icon grid organized by 8 groups
- Search filters icons by name and keywords across all groups
- Click-outside and Escape key close the popover
- Trigger button displays selected icon or "+" placeholder

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:53:55 +01:00
makiolajandClaude Opus 4.6 7d4777a4a4 docs(06-01): complete category icon data layer plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:52:18 +01:00
makiolajandClaude Opus 4.6 fca1eb7d34 feat(06-01): install lucide-react and create icon data with LucideIcon component
- Install lucide-react v0.577.0
- Create iconData.ts with 119 curated icons across 8 groups
- Add LucideIcon component with kebab-to-PascalCase conversion and fallback
- Export EMOJI_TO_ICON_MAP for migration compatibility
- Build succeeds with new dependency

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:49:56 +01:00
makiolajandClaude Opus 4.6 546dff151b feat(06-01): migrate categories from emoji to Lucide icon field
- Rename emoji column to icon in schema, Zod schemas, and all services
- Add Drizzle migration with emoji-to-icon data conversion
- Update test helper, seed, and all test files for icon field
- All 87 tests pass with new icon-based schema

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:48:23 +01:00
makiolaj 78e38df27a docs(06-category-icons): create phase plan 2026-03-15 17:42:30 +01:00
makiolaj 5bd7d45a99 docs(state): record phase 6 context session 2026-03-15 17:37:03 +01:00
makiolaj 0c73427671 docs(06): capture phase context 2026-03-15 17:36:55 +01:00
makiolaj 28ceb3c6ef docs(phase-5): complete phase execution 2026-03-15 17:18:45 +01:00
makiolajandClaude Opus 4.6 da4f46a852 docs(05-02): complete image placeholders and thumbnails plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:15:53 +01:00
makiolajandClaude Opus 4.6 acf34c33d9 feat(05-02): add always-visible 4:3 image area with placeholders to ItemCard and CandidateCard
- Replace conditional image rendering with always-present 4:3 aspect ratio area
- Show category emoji centered on gray background when no image exists
- Ensures consistent card heights across grid layouts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:14:20 +01:00
makiolajandClaude Opus 4.6 036d8ac183 docs(05-01): complete image display fix and hero area plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:12:54 +01:00
makiolajandClaude Opus 4.6 3243be433f feat(05-01): redesign ImageUpload as hero area and move to top of forms
- Full-width 4:3 aspect ratio hero image area with rounded corners
- Placeholder state: gray background with ImagePlus icon and helper text
- Preview state: object-cover image with circular X remove button
- Upload state: semi-transparent spinner overlay
- Entire area clickable to upload/replace image
- Moved ImageUpload to first element in both ItemForm and CandidateForm
- Removed redundant "Image" label wrappers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:11:18 +01:00
makiolajandClaude Opus 4.6 8c0529cd60 fix(05-01): add imageFilename to Zod validation schemas
- Root cause: Zod schemas for createItem and createCandidate did not
  include imageFilename field, so @hono/zod-validator silently stripped
  it from validated payloads before reaching the service layer
- Images uploaded successfully but filename was never persisted to DB
- Added imageFilename as optional string to both createItemSchema and
  createCandidateSchema

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:09:59 +01:00
makiolaj a52fa3b24c docs(05): create phase plan for image handling 2026-03-15 17:06:33 +01:00
makiolaj bb8fc59d03 docs(state): record phase 5 context session 2026-03-15 17:02:35 +01:00
makiolaj 71f3a85167 docs(05): capture phase context 2026-03-15 17:02:27 +01:00
makiolaj 78f7f620a1 docs(phase-4): complete phase execution 2026-03-15 16:43:25 +01:00
makiolajandClaude Opus 4.6 65fe350209 docs(04-02): complete planning tab frontend overhaul plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:40:25 +01:00
makiolajandClaude Opus 4.6 d05aac0687 feat(04-02): overhaul PlanningView with empty state, pill tabs, and category filter
- Replace inline thread creation form with modal trigger
- Add educational empty state with 3-step workflow guide
- Add Active/Resolved pill tab selector replacing checkbox
- Add category filter dropdown for thread list
- Display category emoji + name badge on ThreadCard
- Add aria-hidden to decorative SVG icons for a11y
- Auto-format pre-existing indentation issues (spaces to tabs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:38:48 +01:00
makiolajandClaude Opus 4.6 eb79ab671e feat(04-02): add CreateThreadModal and uiStore modal state
- Add createThreadModalOpen state to uiStore with open/close actions
- Create CreateThreadModal with name input and category dropdown
- Modal submits via useCreateThread with name + categoryId
- Fix pre-existing formatting in uiStore.ts (spaces to tabs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:36:51 +01:00
makiolajandClaude Opus 4.6 4a31a16e0e docs(04-01): complete database thread categoryId plan
- SUMMARY.md documents 2 tasks, 1 deviation (test fixes)
- STATE.md advanced to plan 1/2 in phase 4
- ROADMAP.md marks 04-01 complete
- REQUIREMENTS.md marks DB-01 and PLAN-01 complete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:33:40 +01:00
makiolajandClaude Opus 4.6 ed8508110f feat(04-01): update thread service, routes, and hooks for categoryId
- createThread now inserts categoryId from data
- getAllThreads joins categories table, returns categoryName/categoryEmoji
- updateThread accepts optional categoryId
- ThreadListItem interface includes category fields
- useCreateThread hook sends categoryId
- Fix test files to pass categoryId when creating threads

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:31:48 +01:00
makiolajandClaude Opus 4.6 629e14f60c feat(04-01): add categoryId to threads schema, Zod schemas, and test helper
- Add categoryId column with FK to categories on threads table
- Update createThreadSchema to require categoryId
- Update updateThreadSchema to allow optional categoryId
- Update test helper CREATE TABLE to include category_id

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:30:46 +01:00
makiolaj 92afac3eb7 docs(04): create phase plan 2026-03-15 16:27:47 +01:00
makiolaj 80496b7f50 docs(state): record phase 4 context session 2026-03-15 16:22:40 +01:00
makiolaj 8e270e4d98 docs(04): capture phase context 2026-03-15 16:22:32 +01:00
makiolaj 9a08e5f9fd docs: create milestone v1.1 roadmap (3 phases) 2026-03-15 16:11:17 +01:00
makiolaj 6975b4612f docs: define milestone v1.1 requirements 2026-03-15 16:08:42 +01:00
makiolaj c348c65369 docs: start milestone v1.1 Fixes & Polish 2026-03-15 16:06:06 +01:00
makiolaj 261c1f9d02 chore: complete v1.0 MVP milestone
Archive roadmap, requirements, and phase directories to milestones/.
Evolve PROJECT.md with validated requirements and key decisions.
Reorganize ROADMAP.md with milestone grouping.
Delete REQUIREMENTS.md (fresh for next milestone).
2026-03-15 15:49:45 +01:00
makiolaj 89368c2651 docs: update retrospective for v1.0 2026-03-15 15:49:35 +01:00
makiolajandClaude Opus 4.6 f556231a38 docs(phase-3): complete phase execution
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:57:45 +01:00
makiolajandClaude Opus 4.6 477be8e926 docs(03-03): complete visual verification plan for setups and dashboard
- Auto-approved checkpoint for all Phase 3 requirements
- All 10 plans across 3 phases complete (100%)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:54:40 +01:00
makiolajandClaude Opus 4.6 e1e30ba52b docs(03-02): complete setup frontend plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:52:38 +01:00
makiolajandClaude Opus 4.6 67099551d0 feat(03-02): setup list page, detail page, and item picker
- Create SetupCard component with name, item count, weight, cost display
- Build setups list page with inline create form and grid layout
- Build setup detail page with category-grouped items and sticky totals bar
- Create ItemPicker component in SlideOutPanel with category-grouped checkboxes
- Add onRemove prop to ItemCard for non-destructive setup item removal
- Setup detail has delete confirmation dialog with collection safety note
- Empty states for both setup list and setup detail pages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:50:54 +01:00
makiolajandClaude Opus 4.6 86a7a0def1 feat(03-02): navigation restructure, TotalsBar refactor, and setup hooks
- Move collection view from / to /collection with gear/planning tabs
- Rewrite / as dashboard with three summary cards (Collection, Planning, Setups)
- Refactor TotalsBar to accept optional stats/linkTo/title props
- Create DashboardCard component for dashboard summary cards
- Create useSetups hooks (CRUD + sync/remove item mutations)
- Update __root.tsx with route-aware TotalsBar, FAB visibility, resolve navigation
- Add item picker and setup delete UI state to uiStore
- Invalidate setups queries on item update/delete for stale data prevention
- Update routeTree.gen.ts with new collection/setups routes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:49:03 +01:00
makiolajandClaude Opus 4.6 c2b8985d37 docs(03-01): complete setup backend plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:44:40 +01:00
makiolajandClaude Opus 4.6 0f115a2a4b feat(03-01): implement setup backend with junction table
- Setup service with CRUD, syncSetupItems, removeSetupItem
- SQL aggregation for itemCount, totalWeight, totalCost via COALESCE
- Hono routes for all 7 endpoints with zValidator
- Mount setupRoutes at /api/setups
- All 87 tests pass (24 new setup tests)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:43:02 +01:00
makiolajandClaude Opus 4.6 1e4e74f8d2 test(03-01): add failing tests for setup backend
- Add setups and setupItems tables to DB schema
- Add Zod schemas for setup create/update/sync
- Add Setup/SetupItem types to shared types
- Add setup tables to test helper
- Write service and route tests (RED - no implementation yet)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:42:15 +01:00
makiolaj 6b773c6f79 docs(03): create phase plan for setups and dashboard 2026-03-15 12:32:23 +01:00
makiolaj e633df7d0e docs(phase-3): add validation strategy 2026-03-15 12:27:18 +01:00
makiolaj 2424ecc0c2 docs(03): research phase domain 2026-03-15 12:26:27 +01:00
makiolaj 56258d7eed docs(state): record phase 3 context session 2026-03-15 12:22:31 +01:00
makiolaj 8532c5c4a2 docs(03): capture phase context 2026-03-15 12:22:25 +01:00
makiolaj 88140b994d docs(phase-2): complete phase execution 2026-03-15 11:54:54 +01:00
makiolajandClaude Opus 4.6 f0ba26ff88 docs(02-03): complete visual verification plan for planning threads
- All four THRD requirements verified working end-to-end in browser
- Phase 2 complete, STATE.md and ROADMAP.md updated

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:51:38 +01:00
makiolajandClaude Opus 4.6 edcef3fcda docs(02-02): complete thread frontend UI plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:48:10 +01:00
makiolaj 7d043a8585 feat(02-02): add thread detail page with candidate CRUD and resolution flow
- Create CandidateCard with edit, delete, and pick winner actions
- Create CandidateForm with same fields as ItemForm for candidate add/edit
- Build thread detail page with candidate grid and resolution banner
- Update root layout with candidate panel, delete dialog, and resolve dialog
- Hide FAB on thread detail pages, keep it for gear tab
- Resolution navigates back to planning tab after success
2026-03-15 11:46:19 +01:00
makiolaj a9d624dc83 feat(02-02): add thread hooks, UI store, tab navigation, and thread list
- Create useThreads/useCandidates TanStack Query hooks
- Extend uiStore with candidate panel and resolve dialog state
- Add ThreadTabs component for gear/planning tab switching
- Add ThreadCard component with candidate count and price range chips
- Refactor index.tsx to tabbed HomePage with PlanningView
- Create placeholder thread detail route for navigation target
2026-03-15 11:44:17 +01:00
makiolajandClaude Opus 4.6 53d6fa445d docs(02-01): complete thread backend API plan
- Created 02-01-SUMMARY.md with execution results
- Updated STATE.md with phase 2 position and decisions
- Updated ROADMAP.md with plan progress
- Marked THRD-01 through THRD-04 requirements complete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:41:19 +01:00
makiolajandClaude Opus 4.6 add3e3371d feat(02-01): add thread API routes and mount in server
- Thread CRUD: GET /, POST /, GET /:id, PUT /:id, DELETE /:id
- Candidate CRUD: POST /:id/candidates, PUT/DELETE nested candidates
- Resolution: POST /:id/resolve with validation and error handling
- Image cleanup on thread/candidate deletion
- Routes mounted at /api/threads in server index

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:39:15 +01:00
makiolajandClaude Opus 4.6 37c9999d07 test(02-01): add failing integration tests for thread API routes
- 14 integration tests covering all thread and candidate endpoints
- Thread CRUD, candidate CRUD, and resolution endpoint tests
- Covers error cases: 400 validation, 404 not found, resolved re-resolve

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:38:35 +01:00
makiolajandClaude Opus 4.6 1a8b91edca feat(02-01): implement thread service with CRUD and transactional resolution
- Thread CRUD: create, update, delete with cascade candidate cleanup
- Candidate CRUD: create, update, delete with all item-compatible fields
- getAllThreads with subquery aggregates for candidateCount and price range
- getThreadWithCandidates with candidate+category join
- resolveThread: atomic transaction creating collection item from candidate data
- Category fallback to Uncategorized on resolution if category deleted

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:37:53 +01:00
makiolajandClaude Opus 4.6 e146eeab80 test(02-01): add failing tests for thread service
- Add threads and threadCandidates tables to Drizzle schema
- Add Zod schemas for thread/candidate/resolve validation
- Add Thread/ThreadCandidate types to shared types
- Update test helper with threads and thread_candidates tables
- Write comprehensive failing tests for thread service

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:36:01 +01:00
makiolaj 2c4eb5b632 docs(02): create phase plan for planning threads 2026-03-15 11:30:50 +01:00
makiolaj 6e3f787bef docs(phase-2): add research and validation strategy 2026-03-15 11:25:17 +01:00
makiolaj 91c16b9b3c docs(phase-2): research planning threads domain 2026-03-15 11:24:28 +01:00
makiolaj f390834e9d docs(state): record phase 2 context session 2026-03-15 11:18:31 +01:00
makiolaj bdcb303418 docs(02): capture phase context 2026-03-15 11:18:26 +01:00
makiolaj e1051e022b docs(phase-1): complete phase execution 2026-03-14 22:58:55 +01:00
makiolaj 55d47d4e33 fix(01): align image upload field name and wrap category delete in transaction 2026-03-14 22:58:41 +01:00
makiolajandClaude Opus 4.6 950bf2c287 docs(01-04): complete onboarding wizard and visual verification plan
- Phase 1 (Foundation and Collection) fully complete: 4/4 plans done
- Onboarding wizard with settings API and human-verified collection experience

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:54:05 +01:00
makiolajandClaude Opus 4.6 9fcbf0bab5 feat(01-04): add onboarding wizard with settings API and persisted state
- Settings API: GET/PUT /api/settings/:key with SQLite persistence
- useSettings hook with TanStack Query for settings CRUD
- OnboardingWizard: 3-step modal overlay (welcome, create category, add item)
- Root layout checks onboarding completion flag before rendering wizard
- Skip option available at every step, all paths persist completion to DB

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:51:25 +01:00
makiolajandClaude Opus 4.6 0084cc0608 docs(01-03): complete frontend collection UI plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:48:09 +01:00
makiolajandClaude Opus 4.6 12fd14ff41 feat(01-03): add slide-out panel, item form, category picker, and collection page
- CategoryPicker combobox with search, select, and inline create
- SlideOutPanel with backdrop, escape key, and slide animation
- ItemForm with all fields, validation, dollar-to-cents conversion
- Root layout with TotalsBar, panel, confirm dialog, and floating add button
- Collection page with card grid grouped by category, empty state

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:46:24 +01:00
makiolajandClaude Opus 4.6 b099a47eb4 feat(01-03): add data hooks, utilities, UI store, and foundational components
- API fetch wrapper with error handling and multipart upload
- Weight/price formatters for display
- TanStack Query hooks for items, categories, and totals with cache invalidation
- Zustand UI store for panel and confirm dialog state
- TotalsBar, CategoryHeader, ItemCard, ConfirmDialog, ImageUpload components

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:44:48 +01:00
makiolajandClaude Opus 4.6 a5df33a2d8 docs(01-02): complete backend API plan
- SUMMARY.md with 30 passing tests, 13 files, 3min duration
- STATE.md updated to plan 2/4 at 50% progress
- ROADMAP.md and REQUIREMENTS.md updated with COLL-01 through COLL-04

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:42:22 +01:00
makiolajandClaude Opus 4.6 029adf4dca feat(01-02): add Hono API routes with validation, image upload, and integration tests
- Item routes: GET, POST, PUT, DELETE with Zod validation and image cleanup
- Category routes: GET, POST, PUT, DELETE with Uncategorized protection
- Totals route: per-category and global aggregates
- Image upload: multipart file handling with type/size validation
- Routes use DI via Hono context variables for testability
- Integration tests: 10 tests covering all endpoints and edge cases
- All 30 tests passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:40:49 +01:00
makiolajandClaude Opus 4.6 22757a8aef feat(01-02): implement item, category, and totals service layers
- Item CRUD: getAllItems with category join, getById, create, update, delete
- Category CRUD: getAll ordered by name, create, update, delete with reassignment
- Totals: per-category aggregates and global totals via SQL SUM/COUNT
- All 20 service tests passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:39:09 +01:00
makiolajandClaude Opus 4.6 f90677988d test(01-02): add failing tests for item, category, and totals services
- Item CRUD tests: create, getAll, getById, update, delete
- Category CRUD tests: create, getAll, update, delete with reassignment
- Totals tests: per-category and global aggregates

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:38:40 +01:00
makiolajandClaude Opus 4.6 2d4f363823 docs(01-01): complete project scaffolding plan
- Add 01-01-SUMMARY.md with execution results
- Update STATE.md with position, decisions, and resolved blockers
- Update ROADMAP.md with plan progress
- Mark COLL-01 and COLL-03 requirements complete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:36:52 +01:00
makiolajandClaude Opus 4.6 7412ef1d86 feat(01-01): add database schema, shared Zod schemas, seed, and test infrastructure
- Create Drizzle schema with items, categories, and settings tables
- Set up database connection singleton with WAL mode and foreign keys
- Add seed script for default Uncategorized category
- Create shared Zod validation schemas for items and categories
- Export TypeScript types inferred from Zod and Drizzle schemas
- Add in-memory SQLite test helper for isolated test databases
- Wire seed into Hono server startup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:34:53 +01:00
makiolajandClaude Opus 4.6 67ff86039f feat(01-01): scaffold project with Vite, Hono, TanStack Router, Tailwind, and Drizzle config
- Initialize bun project with all frontend/backend dependencies
- Configure Vite with TanStack Router plugin, React, and Tailwind v4
- Create Hono server with health check and static file serving
- Set up TanStack Router file-based routes with root layout
- Add Drizzle config, Biome linter, and proper .gitignore

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:33:28 +01:00
makiolaj 5558381e09 docs(01): create phase plan 2026-03-14 22:27:00 +01:00
makiolaj bbe4ac2b29 docs(phase-1): add validation strategy 2026-03-14 22:19:09 +01:00
makiolaj 4bd70cd4e5 docs(01): research phase domain 2026-03-14 22:18:09 +01:00
makiolaj aae4e14a8f docs(state): record phase 1 context session 2026-03-14 22:10:46 +01:00
makiolaj 8f8c31ec0d docs(01): capture phase context 2026-03-14 22:10:37 +01:00
makiolaj febae3498a docs: create roadmap (3 phases) 2026-03-14 21:53:13 +01:00
makiolaj 1886ac1abd docs: define v1 requirements 2026-03-14 21:50:52 +01:00
makiolaj 8f1647d557 docs: complete project research 2026-03-14 21:46:42 +01:00
makiolaj 632e45d294 chore: add project config 2026-03-14 21:39:27 +01:00
makiolaj 227239ce41 docs: initialize project 2026-03-14 21:38:16 +01:00
makiolaj 01f1a43545 Initial commit 2026-03-14 20:07:01 +00:00