Quick Shop (Shopping List)

module_id
shopping
source_nav_id
quickshop
user_facing_name
Quick Shop
recipe_version
visual-recipe-v0.5
build
SmartPantry v0.1-rebuild (manual FvRE-style extraction, July 2026)

Purpose

Build, manage, and print shopping lists. Pulls from mealplan + pantry gaps + manual adds.

recipe.json

{
  "schema_version": "visual-recipe-v0.5",
  "module_id": "shopping",
  "name": "Quick Shop (Shopping List)",
  "source_nav_id": "quickshop",
  "user_facing_name": "Quick Shop",
  "purpose": "Build, manage, and print shopping lists. Pulls from mealplan + pantry gaps + manual adds.",
  "behaviour": {
    "auto_populate": "from mealplan (planned meals) + pantry (missing stock)",
    "multiple_lists": "create / clone / switch between lists",
    "shopping_trips": "log each trip with timestamp",
    "print": "printShoppingList, printQuickShopFromPreview",
    "preview_modal": "shoppingPreviewModal shows what will print",
    "price_cache": "ingredient \u2192 estimated price",
    "purchase_history": "what was bought when",
    "ai_quick_action": "AI suggests items based on patterns"
  },
  "data": {
    "list": "pantry_shopping (localStorage)",
    "custom_lists": "pantry_custom_lists (localStorage)",
    "trips": "pantry_shoppingTrips (localStorage)",
    "selected_list": "pantry_selectedShopList (localStorage)",
    "tab_mode": "pantry_shopTabMode (localStorage)",
    "price_cache": "pantry_priceCache (localStorage)",
    "purchase_history": "pantry_purchaseHistory (localStorage)"
  },
  "key_functions": [
    "addItemToList",
    "addItemToSelectedList",
    "addItemToTargetList",
    "addCupboardItemToList",
    "addToShoppingFromRecent",
    "adjShopQty",
    "adjStapleQtyFromList",
    "adjustShopItem",
    "cleanupBrokenLists",
    "clearAllListItems",
    "cloneList",
    "createCustomList",
    "deleteCustomList",
    "deleteShoppingTrip",
    "devAddList",
    "devAddListFromJSON",
    "agentSubmitListFromModal",
    "aiQuickAction",
    "closeShoppingPreview",
    "closeQuickShopPreview",
    "printShoppingList",
    "printQuickShopFromPreview"
  ],
  "files": {
    "html": "app/index.html#quickshop-tab",
    "css": "app/styles.css (shopping list + preview modal classes)",
    "js": "app/modules/shopping.js"
  },
  "tests": [
    "Auto-populate from mealplan works",
    "Auto-populate from pantry gaps works",
    "Multiple lists can coexist",
    "Print preview shows formatted list",
    "Shopping trip is logged",
    "Price is cached for repeated items"
  ]
}

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/shopping/recipe.json