feat: POS register screen with touch-optimized layout #6

Merged
ryan merged 3 commits from feature/pos-register into main 2026-04-04 20:14:22 +00:00
Owner

Summary

  • Full-screen POS register at /pos, bypasses admin sidebar
  • Two-panel layout (60/40): product search + grid | cart + payment
  • Product search with barcode scan support (UPC lookup on Enter)
  • Custom item entry, cash/card/check payment dialogs with change calc
  • Drawer open/close with balance reconciliation and over/short
  • Backend enforces open drawer before completing transactions
  • POS link in admin sidebar (module-gated)
  • 39 POS API tests passing

Test plan

  • Navigate to /pos — full-screen, no sidebar
  • Search products, tap to add to cart
  • Verify payment blocked without open drawer
  • Open drawer, complete cash sale with change
  • Complete card sale
  • Void a pending transaction
  • Close drawer, verify over/short
  • All 39 POS API tests pass

🤖 Generated with Claude Code

## Summary - Full-screen POS register at `/pos`, bypasses admin sidebar - Two-panel layout (60/40): product search + grid | cart + payment - Product search with barcode scan support (UPC lookup on Enter) - Custom item entry, cash/card/check payment dialogs with change calc - Drawer open/close with balance reconciliation and over/short - Backend enforces open drawer before completing transactions - POS link in admin sidebar (module-gated) - 39 POS API tests passing ## Test plan - [x] Navigate to `/pos` — full-screen, no sidebar - [x] Search products, tap to add to cart - [ ] Verify payment blocked without open drawer - [ ] Open drawer, complete cash sale with change - [ ] Complete card sale - [ ] Void a pending transaction - [ ] Close drawer, verify over/short - [ ] All 39 POS API tests pass 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ryan added 2 commits 2026-04-04 19:54:31 +00:00
Standalone register at /pos bypassing the admin sidebar layout:
- Two-panel layout: product search/grid (60%) + cart/payment (40%)
- Product search with barcode scan support (UPC lookup on Enter)
- Custom item entry dialog for ad-hoc items
- Cart with line items, tax, totals, and remove-item support
- Payment dialogs: cash (quick amounts + change calc), card, check
- Drawer open/close with balance reconciliation and over/short
- Auto-creates pending transaction on first item added
- POS link added to admin sidebar nav (module-gated)
- Zustand store for POS session state, React Query for server data

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: require open drawer to complete transactions, fix product price field
Some checks failed
CI / ci (pull_request) Failing after 20s
CI / e2e (pull_request) Has been skipped
1673e18fe8
- Backend enforces open drawer at location before completing any transaction
- Frontend disables payment buttons when drawer is closed with warning message
- Fix product price field name (price, not sellingPrice) in POS API types
- Fix seed UUIDs to use valid UUID v4 format (version nibble must be 1-8)
- Fix Vite allowedHosts for dev.lunarfront.tech access
- Add e2e test for drawer enforcement (39 POS tests now pass)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ryan added 1 commit 2026-04-04 20:12:20 +00:00
fix: resolve all frontend lint errors and warnings
All checks were successful
CI / ci (pull_request) Successful in 21s
CI / e2e (pull_request) Successful in 59s
a0be16d848
Replace all `any` types with proper types across 36 files:
- TanStack Router search params: `{} as Record<string, unknown>`
- API response pagination: proper typed interface
- DataTable column casts: remove unnecessary `as any`
- Function params and event handlers: use specific types
- Remove unused imports and variables in POS components

Frontend lint now passes with 0 errors and 0 warnings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ryan merged commit 2b9e99bbd6 into main 2026-04-04 20:14:22 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ryan/lunarfront-app#6