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.
{
"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"
]
}
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