Build, manage, and print shopping lists. Pulls from mealplan + pantry gaps + manual adds.
{
"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"
]
}
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