Landing / Dashboard

module_id
landing
source_nav_id
inventory
user_facing_name
Dashboard
recipe_version
visual-recipe-v0.5
build
SmartPantry v0.1-rebuild (manual FvRE-style extraction, July 2026)

Purpose

Home/landing view. Replaces the old static marketing hero with a live dashboard showing 4 stat cards + 4 detail cards + Refresh footer. Renders 6 main panels as draggable cards.

recipe.json

{
  "schema_version": "visual-recipe-v0.5",
  "module_id": "landing",
  "name": "Landing / Dashboard",
  "source_nav_id": "inventory",
  "user_facing_name": "Dashboard",
  "purpose": "Home view. Shows draggable panels for the 6 main areas. Default landing when the app opens.",
  "behaviour": {
    "panels": [
      "cupboard",
      "whattocook",
      "quickshop",
      "discover"
    ],
    "panel_draggable": true,
    "panel_resizable": true,
    "panel_swap_supported": true,
    "panel_swap_history": "layoutSwaps, layoutSwaps_undo (localStorage)",
    "default_panel_order": [
      "cupboard",
      "whattocook",
      "quickshop",
      "discover"
    ],
    "active_tab_persisted_as": "pantry_activeTab",
    "drag_drop_library": "SortableJS 1.15.0"
  },
  "data": {
    "panel_config": "dashboardPanels (localStorage)",
    "panel_order": "panelOrder (localStorage)",
    "panel_proportions": "panelProportionsById (localStorage)",
    "layout_swap_history": "layoutSwaps, layoutSwaps_undo (localStorage)"
  },
  "ui": {
    "header_height": 60,
    "chip_nav_height": 50,
    "responsive": true,
    "mobile_panel_behavior": "swapped-in panels start collapsed on mobile (<600px)"
  },
  "key_functions": [
    "renderChipNav",
    "navChipClick",
    "showTab",
    "togglePanel",
    "maximizePanel",
    "onChipDragOverPanel",
    "onChipDropOnPanel",
    "saveTabOrder",
    "loadTabOrder"
  ],
  "files": {
    "html": "app/index.html#inventory-tab",
    "css": "app/styles.css (panel + chip-nav + dashboard classes)",
    "js": "app/modules/landing.js"
  },
  "tests": [
    "Renders 4 panels by default",
    "All 4 panels are draggable",
    "Panel order persists to localStorage",
    "Tab swap creates a new panel from the tab content",
    "Mobile viewport (<600px) collapses swapped panels"
  ]
}

Rebuild decisions for this module


Part of the SmartPantry module-organised rebuild. Authored by hand following the FvRE Recipe Book pattern. Source: /workspace/smartpantry-app/recipe-book/landing/recipe.json