ca-grow-ops-manager/docs/AUDIT-LAYOUT-DESIGNER-SPEC.md
fullsizemalt 71e58dd4c7
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
feat: Linear-inspired UI redesign with Space Grotesk headlines
- Complete UI refactor with charcoal/bone color palette
- Add Space Grotesk font for headlines, Inter for body
- Update all 24+ pages with new design system
- Add LinearPrimitives reusable components
- Improve dark mode support throughout
- Add subtle micro-animations and transitions
2025-12-12 14:29:47 -08:00

6.4 KiB
Raw Blame History

Spec Compliance Audit - Layout Designer & UI/UX Refactor

Date: 2025-12-12 (Revised) Auditor: Antigravity AI Subject: Facility Layout Designer (Spec Kit Compliance) Status: IMPLEMENTED (~80%) - Ready for UI/UX Polish


🎯 Executive Summary

Great news! The Layout Designer feature is already substantially built. The foundational work covers:

Component Status Location
Database Schema Complete backend/prisma/schema.prisma (Lines 501-641)
API Routes Complete backend/src/routes/layout.routes.ts (764 lines)
Zustand Store Complete frontend/src/stores/layoutStore.ts (388 lines)
API Client Complete frontend/src/lib/layoutApi.ts
Main Page Complete frontend/src/features/layout-designer/LayoutDesignerPage.tsx
Canvas (Konva) Complete frontend/src/features/layout-designer/components/LayoutCanvas.tsx
Inspector Panel Complete frontend/src/features/layout-designer/components/InspectorPanel.tsx
Sub-Components Complete 10 components in components/ directory

Recommendation: Proceed directly to UI/UX Polish Sprint.


📊 Current Implementation Status

Database Schema (Prisma)

The following models are already in production:

  • FacilityProperty - Top-level (License)
  • FacilityBuilding - Sub-property
  • FacilityFloor - Per-building
  • FacilityRoom - Per-floor (canvas shapes)
  • FacilitySection - Grow tables/racks within rooms
  • FacilityPosition - Individual plant slots (row/column/tier)
  • FacilityPlant - Individual plants with METRC tags
  • PlantLocationHistory - Move audit trail

API Endpoints

All CRUD operations are fully implemented:

Endpoint Method Function
/api/layout/properties GET/POST Property CRUD
/api/layout/buildings POST Building CRUD
/api/layout/floors/:id GET Floor with rooms
/api/layout/floors POST Create floor
/api/layout/rooms POST Create room
/api/layout/rooms/:id PUT/DELETE Room CRUD
/api/layout/rooms/:id/sections GET Get sections with positions
/api/layout/sections POST Create section with positions
/api/layout/sections/:id GET Get section with plants
/api/layout/sections/:id/fill POST Bulk plant placement
/api/layout/positions/:id/occupy POST Place single plant
/api/layout/plants/:id/move POST Move plant with history
/api/layout/floors/:id/layout POST Bulk save layout
/api/layout/positions/:id/address GET Generate METRC address

Frontend Components

The Figma-like editor is already functional:

features/layout-designer/
├── LayoutDesignerPage.tsx      (565 lines - main page)
└── components/
    ├── LayoutCanvas.tsx         (Canvas with react-konva)
    ├── InspectorPanel.tsx       (Room/Section/Position details)
    ├── LayersPanel.tsx          (Room list)
    ├── ElementsPanel.tsx        (Drag-to-add elements)
    ├── FloorSelector.tsx        (Building/Floor picker)
    ├── PropertySetup.tsx        (Initial property creation)
    ├── AddBuildingModal.tsx
    ├── AddFloorModal.tsx
    ├── AddSectionDialog.tsx
    └── PlantInventory.tsx       (Plant list sidebar)

State Management (Zustand)

The store (layoutStore.ts) implements all required functionality:

  • Canvas state (zoom, pan, grid, snap)
  • Selection state (rooms, sections, positions)
  • Room/Section CRUD with undo/redo history
  • Data normalization (rooms and sections stored separately)

⚠️ Remaining Gaps for UI/UX Polish

1. Visual Design Alignment

Issue: The current UI uses basic Slate/Emerald but lacks the "Premium" polish defined in LAYOUT-DESIGNER-UX.md.

Missing:

  • Glassmorphism panels (backdrop-blur, subtle borders)
  • Micro-animations (selection glow, drag feedback)
  • Premium tooltips
  • Keyboard shortcut hints

2. Mobile/Tablet Experience

Issue: The Layout Designer is desktop-only. The spec defines mobile gestures, but they are not implemented.

Missing:

  • Touch gestures (pinch-to-zoom, two-finger pan)
  • Mobile bottom sheet for inspector
  • "View Only" mode for small screens

3. QR Code / Scanning Integration

Issue: The mobile flow ("Scan Plant Tag -> Show Location") is not implemented.

Missing:

  • @zxing/browser integration
  • Position QR code generation (qrcode.react)
  • Scan-to-locate flow

4. Export Functionality

Issue: The "Export" button exists but is non-functional.

Missing:

  • PDF floor plan export
  • PNG/SVG image export
  • METRC location report export

UI/UX Refactor Sprint Plan

Sprint 1: Visual Polish (4-6 hours)

  • Apply glassmorphism to sidebar panels
  • Add selection glow animation (box-shadow with emerald color)
  • Improve room/section hover states
  • Add micro-animation on room placement
  • Add keyboard shortcut hints in tooltips

Sprint 2: Inspector & Interaction Polish (4-6 hours)

  • Redesign InspectorPanel for better hierarchy (Room > Section > Position)
  • Add position grid preview with color-coded status
  • Implement position click to select (currently working, needs visual feedback)
  • Add "Bulk Actions" for selected positions (Mark Harvested, Mark Issue)

Sprint 3: Mobile Experience (6-8 hours)

  • Add responsive breakpoints (hide sidebars on mobile)
  • Implement touch gestures (pinch/pan)
  • Create mobile "Position Detail" bottom sheet
  • Add "View Only" mode that disables editing

Sprint 4: QR & Export (4-6 hours)

  • Integrate QR code generation for positions
  • Implement position scan-to-locate
  • Add PDF export using html2canvas + jspdf
  • Add JSON export/import for layout backup

📝 Audit Conclusion

Status: IMPLEMENTED (Proceed to Polish Sprint)

The Layout Designer is already 80% complete. The schema, API, store, and core UI are all functional. The remaining work is purely UI/UX polish to align with the premium aesthetic defined in the spec.

Next Steps:

  1. Review the current /layout-designer page in the browser
  2. Identify specific visual improvements needed
  3. Begin Sprint 1: Visual Polish

No schema migration required the data model is already complete and matches the spec.