319 lines
41 KiB
TypeScript
319 lines
41 KiB
TypeScript
|
|
import type { ItemId, StoreItem } from "@/app/types";
|
||
|
|
|
||
|
|
// ---------------------------------------------------------------------------
|
||
|
|
// Store catalog — U.S. average grocery prices as of October 2026.
|
||
|
|
//
|
||
|
|
// Core staples are calibrated against the U.S. Bureau of Labor Statistics (BLS)
|
||
|
|
// CPI Average Retail Food Prices (U.S. City Average, released October 14, 2026),
|
||
|
|
// e.g. Grade A large eggs ($2.27/doz), boneless chicken breast ($4.20/lb),
|
||
|
|
// 80/20 ground beef ($6.49/lb), boneless pork chops ($4.55/lb), stick butter
|
||
|
|
// ($3.96/lb), reduced-fat milk ($3.59/gal), natural cheddar ($6.13/lb), white
|
||
|
|
// bread ($1.83/lb), white rice ($1.12/lb), dry pasta ($1.38/lb), Russet
|
||
|
|
// potatoes ($0.99/lb), field tomatoes ($1.99/lb), bananas ($0.66/lb), flour
|
||
|
|
// ($0.55/lb), and sugar ($1.02/lb). Items outside the BLS APU basket reflect
|
||
|
|
// October 2026 U.S. national supermarket shelf averages.
|
||
|
|
//
|
||
|
|
// Swap in live store pricing by implementing PriceProvider (see pricing.ts).
|
||
|
|
//
|
||
|
|
// Conventions:
|
||
|
|
// - packageSize is in baseUnit (g / ml / each)
|
||
|
|
// - gramsPerMl only on weight items that recipes measure in cups/tbsp
|
||
|
|
// ---------------------------------------------------------------------------
|
||
|
|
|
||
|
|
const LB = 453.6; // grams
|
||
|
|
const OZ = 28.35; // grams
|
||
|
|
const FL_OZ = 29.57; // ml
|
||
|
|
|
||
|
|
export const CATALOG: StoreItem[] = [
|
||
|
|
// --- Meat & Eggs ---------------------------------------------------------
|
||
|
|
{ id: "chicken_breast", name: "Boneless Skinless Chicken Breast", aisle: "Meat & Eggs", packageSize: 2.5 * LB, baseUnit: "g", packageLabel: "2.5 lb tray", price: 10.5 },
|
||
|
|
{ id: "chicken_thighs", name: "Boneless Skinless Chicken Thighs", aisle: "Meat & Eggs", packageSize: 3 * LB, baseUnit: "g", packageLabel: "3 lb tray", price: 9.89 },
|
||
|
|
{ id: "ground_beef", name: "80/20 Ground Beef", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb roll", price: 6.49 },
|
||
|
|
{ id: "ground_turkey", name: "93/7 Ground Turkey", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb roll", price: 4.99 },
|
||
|
|
{ id: "pork_shoulder", name: "Bone-In Pork Shoulder Roast", aisle: "Meat & Eggs", packageSize: 3 * LB, baseUnit: "g", packageLabel: "~3 lb roast", price: 8.39 },
|
||
|
|
{ id: "smoked_sausage", name: "Smoked Sausage Rope", aisle: "Meat & Eggs", packageSize: 13 * OZ, baseUnit: "g", packageLabel: "13 oz", price: 3.79 },
|
||
|
|
{ id: "bacon", name: "Hickory Smoked Bacon", aisle: "Meat & Eggs", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz pack", price: 5.09 },
|
||
|
|
{ id: "eggs", name: "Large White Eggs", aisle: "Meat & Eggs", packageSize: 12, baseUnit: "each", packageLabel: "12 ct", price: 2.27 },
|
||
|
|
{ id: "tofu", name: "Extra Firm Tofu", aisle: "Produce", packageSize: 14 * OZ, baseUnit: "g", packageLabel: "14 oz block", price: 2.39 },
|
||
|
|
|
||
|
|
// --- Dairy -----------------------------------------------------------------
|
||
|
|
{ id: "milk", name: "2% Reduced Fat Milk", aisle: "Dairy", packageSize: 128 * FL_OZ, baseUnit: "ml", packageLabel: "1 gallon", price: 3.59 },
|
||
|
|
{ id: "butter", name: "Salted Butter Sticks", aisle: "Dairy", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb (4 sticks)", price: 3.96, gramsPerMl: 0.96 },
|
||
|
|
{ id: "cheddar", name: "Shredded Mild Cheddar", aisle: "Dairy", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz bag", price: 3.09, gramsPerMl: 0.48 },
|
||
|
|
{ id: "mozzarella", name: "Shredded Low-Moisture Mozzarella", aisle: "Dairy", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz bag", price: 3.09, gramsPerMl: 0.48 },
|
||
|
|
{ id: "parmesan", name: "Grated Parmesan", aisle: "Dairy", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz shaker", price: 3.99, gramsPerMl: 0.42 },
|
||
|
|
{ id: "sour_cream", name: "Sour Cream", aisle: "Dairy", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz tub", price: 2.49, gramsPerMl: 1.0 },
|
||
|
|
{ id: "greek_yogurt", name: "Plain Nonfat Greek Yogurt", aisle: "Dairy", packageSize: 32 * OZ, baseUnit: "g", packageLabel: "32 oz tub", price: 5.29, gramsPerMl: 1.03 },
|
||
|
|
{ id: "heavy_cream", name: "Heavy Whipping Cream", aisle: "Dairy", packageSize: 16 * FL_OZ, baseUnit: "ml", packageLabel: "1 pint", price: 3.89 },
|
||
|
|
|
||
|
|
// --- Produce ---------------------------------------------------------------
|
||
|
|
{ id: "onion", name: "Yellow Onions", aisle: "Produce", packageSize: 8, baseUnit: "each", packageLabel: "3 lb bag (~8)", price: 3.49 },
|
||
|
|
{ id: "potatoes", name: "Russet Potatoes", aisle: "Produce", packageSize: 5 * LB, baseUnit: "g", packageLabel: "5 lb bag", price: 4.95 },
|
||
|
|
{ id: "carrots", name: "Whole Carrots", aisle: "Produce", packageSize: 2 * LB, baseUnit: "g", packageLabel: "2 lb bag", price: 1.99 },
|
||
|
|
{ id: "bell_pepper", name: "Green Bell Pepper", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 1.09 },
|
||
|
|
{ id: "spinach", name: "Baby Spinach", aisle: "Produce", packageSize: 10 * OZ, baseUnit: "g", packageLabel: "10 oz clamshell", price: 3.29, gramsPerMl: 0.13 },
|
||
|
|
{ id: "coleslaw_mix", name: "Classic Coleslaw Mix", aisle: "Produce", packageSize: 14 * OZ, baseUnit: "g", packageLabel: "14 oz bag", price: 2.29 },
|
||
|
|
{ id: "celery", name: "Celery Hearts", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "1 bunch", price: 2.19 },
|
||
|
|
{ id: "lemon", name: "Lemon", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.69 },
|
||
|
|
{ id: "lime", name: "Lime", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.45 },
|
||
|
|
{ id: "green_onions", name: "Green Onions", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "1 bunch", price: 0.99 },
|
||
|
|
{ id: "bananas", name: "Bananas", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.26 },
|
||
|
|
|
||
|
|
// --- Frozen ---------------------------------------------------------------
|
||
|
|
{ id: "frozen_broccoli", name: "Frozen Broccoli Florets", aisle: "Frozen", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 1.69 },
|
||
|
|
{ id: "frozen_mixed_veg", name: "Frozen Mixed Vegetables", aisle: "Frozen", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 1.69, gramsPerMl: 0.57 },
|
||
|
|
{ id: "frozen_berries", name: "Frozen Mixed Berries", aisle: "Frozen", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz bag", price: 3.99, gramsPerMl: 0.6 },
|
||
|
|
|
||
|
|
// --- Pantry: grains, cans, baking -------------------------------------------
|
||
|
|
{ id: "white_rice", name: "Long Grain White Rice", aisle: "Pantry", packageSize: 2 * LB, baseUnit: "g", packageLabel: "2 lb bag", price: 2.24, gramsPerMl: 0.78 },
|
||
|
|
{ id: "spaghetti", name: "Spaghetti", aisle: "Pantry", packageSize: 1 * LB, baseUnit: "g", packageLabel: "16 oz box", price: 1.38 },
|
||
|
|
{ id: "penne", name: "Penne Rigate", aisle: "Pantry", packageSize: 1 * LB, baseUnit: "g", packageLabel: "16 oz box", price: 1.38 },
|
||
|
|
{ id: "elbow_macaroni", name: "Elbow Macaroni", aisle: "Pantry", packageSize: 1 * LB, baseUnit: "g", packageLabel: "16 oz box", price: 1.38 },
|
||
|
|
{ id: "oats", name: "Quick Oats", aisle: "Pantry", packageSize: 42 * OZ, baseUnit: "g", packageLabel: "42 oz canister", price: 4.19, gramsPerMl: 0.34 },
|
||
|
|
{ id: "red_lentils", name: "Dry Lentils", aisle: "Pantry", packageSize: 1 * LB, baseUnit: "g", packageLabel: "16 oz bag", price: 1.79, gramsPerMl: 0.8 },
|
||
|
|
{ id: "flour_tortillas", name: "Flour Tortillas (Taco Size)", aisle: "Bakery", packageSize: 10, baseUnit: "each", packageLabel: "10 ct", price: 2.49 },
|
||
|
|
{ id: "sandwich_bread", name: "White Sandwich Bread", aisle: "Bakery", packageSize: 20, baseUnit: "each", packageLabel: "20 oz loaf (~20 slices)", price: 2.29 },
|
||
|
|
{ id: "breadcrumbs", name: "Italian Breadcrumbs", aisle: "Pantry", packageSize: 15 * OZ, baseUnit: "g", packageLabel: "15 oz canister", price: 1.99, gramsPerMl: 0.45 },
|
||
|
|
{ id: "black_beans", name: "Black Beans, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "15 oz can", price: 1.15 },
|
||
|
|
{ id: "kidney_beans", name: "Dark Red Kidney Beans, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "15.5 oz can", price: 1.15 },
|
||
|
|
{ id: "chickpeas", name: "Chickpeas (Garbanzo), canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "15.5 oz can", price: 1.19 },
|
||
|
|
{ id: "diced_tomatoes", name: "Diced Tomatoes, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "14.5 oz can", price: 1.15 },
|
||
|
|
{ id: "crushed_tomatoes", name: "Crushed Tomatoes, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "28 oz can", price: 2.19 },
|
||
|
|
{ id: "marinara", name: "Traditional Pasta Sauce", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "24 oz jar", price: 2.49 },
|
||
|
|
{ id: "coconut_milk", name: "Coconut Milk, canned", aisle: "Pantry", packageSize: 400, baseUnit: "ml", packageLabel: "13.5 oz can", price: 1.99 },
|
||
|
|
{ id: "chicken_broth", name: "Chicken Broth", aisle: "Pantry", packageSize: 32 * FL_OZ, baseUnit: "ml", packageLabel: "32 oz carton", price: 2.19 },
|
||
|
|
{ id: "peanut_butter", name: "Creamy Peanut Butter", aisle: "Pantry", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz jar", price: 2.69, gramsPerMl: 1.07 },
|
||
|
|
{ id: "honey", name: "Clover Honey", aisle: "Pantry", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bear", price: 4.29, gramsPerMl: 1.42 },
|
||
|
|
{ id: "brown_sugar", name: "Light Brown Sugar", aisle: "Pantry", packageSize: 2 * LB, baseUnit: "g", packageLabel: "2 lb bag", price: 2.49, gramsPerMl: 0.9 },
|
||
|
|
{ id: "pancake_syrup", name: "Original Pancake Syrup", aisle: "Pantry", packageSize: 24 * FL_OZ, baseUnit: "ml", packageLabel: "24 oz bottle", price: 2.79 },
|
||
|
|
{ id: "cornstarch", name: "Corn Starch", aisle: "Pantry", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz box", price: 1.69, gramsPerMl: 0.54 },
|
||
|
|
|
||
|
|
// Pantry staples: listed, but excluded from the total if the user owns them.
|
||
|
|
{ id: "flour", name: "All-Purpose Flour", aisle: "Pantry", packageSize: 5 * LB, baseUnit: "g", packageLabel: "5 lb bag", price: 2.73, gramsPerMl: 0.53, pantryStaple: true },
|
||
|
|
{ id: "baking_powder", name: "Baking Powder", aisle: "Pantry", packageSize: 8.1 * OZ, baseUnit: "g", packageLabel: "8.1 oz can", price: 1.79, gramsPerMl: 0.9, pantryStaple: true },
|
||
|
|
{ id: "vegetable_oil", name: "Vegetable Oil", aisle: "Pantry", packageSize: 48 * FL_OZ, baseUnit: "ml", packageLabel: "48 oz bottle", price: 4.29, pantryStaple: true },
|
||
|
|
{ id: "olive_oil", name: "Extra Virgin Olive Oil", aisle: "Pantry", packageSize: 17 * FL_OZ, baseUnit: "ml", packageLabel: "17 oz bottle", price: 7.99, pantryStaple: true },
|
||
|
|
{ id: "salt", name: "Iodized Salt", aisle: "Spices & Sauces", packageSize: 26 * OZ, baseUnit: "g", packageLabel: "26 oz canister", price: 1.19, gramsPerMl: 1.2, pantryStaple: true },
|
||
|
|
{ id: "black_pepper", name: "Ground Black Pepper", aisle: "Spices & Sauces", packageSize: 3 * OZ, baseUnit: "g", packageLabel: "3 oz", price: 2.49, gramsPerMl: 0.47, pantryStaple: true },
|
||
|
|
|
||
|
|
// --- Spices & Sauces ---------------------------------------------------------
|
||
|
|
{ id: "minced_garlic", name: "Minced Garlic (jar)", aisle: "Spices & Sauces", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz jar", price: 2.89, gramsPerMl: 1.1 },
|
||
|
|
{ id: "soy_sauce", name: "Soy Sauce", aisle: "International", packageSize: 15 * FL_OZ, baseUnit: "ml", packageLabel: "15 oz bottle", price: 2.19 },
|
||
|
|
{ id: "bbq_sauce", name: "Original BBQ Sauce", aisle: "Spices & Sauces", packageSize: 18 * OZ, baseUnit: "g", packageLabel: "18 oz bottle", price: 1.99, gramsPerMl: 1.1 },
|
||
|
|
{ id: "salsa", name: "Medium Thick & Chunky Salsa", aisle: "Spices & Sauces", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz jar", price: 2.69, gramsPerMl: 1.05 },
|
||
|
|
{ id: "taco_seasoning", name: "Taco Seasoning Packet", aisle: "Spices & Sauces", packageSize: 1, baseUnit: "each", packageLabel: "1 oz packet", price: 0.89 },
|
||
|
|
{ id: "chili_powder", name: "Chili Powder", aisle: "Spices & Sauces", packageSize: 2.5 * OZ, baseUnit: "g", packageLabel: "2.5 oz", price: 1.99, gramsPerMl: 0.55 },
|
||
|
|
{ id: "cumin", name: "Ground Cumin", aisle: "Spices & Sauces", packageSize: 1.5 * OZ, baseUnit: "g", packageLabel: "1.5 oz", price: 1.99, gramsPerMl: 0.5 },
|
||
|
|
{ id: "paprika", name: "Paprika", aisle: "Spices & Sauces", packageSize: 2.5 * OZ, baseUnit: "g", packageLabel: "2.5 oz", price: 1.99, gramsPerMl: 0.46 },
|
||
|
|
{ id: "italian_seasoning", name: "Italian Seasoning", aisle: "Spices & Sauces", packageSize: 0.87 * OZ, baseUnit: "g", packageLabel: "0.87 oz", price: 1.89, gramsPerMl: 0.2 },
|
||
|
|
{ id: "curry_powder", name: "Curry Powder", aisle: "Spices & Sauces", packageSize: 1.75 * OZ, baseUnit: "g", packageLabel: "1.75 oz", price: 2.49, gramsPerMl: 0.42 },
|
||
|
|
|
||
|
|
// --- Seafood (one aisle so fish & shellfish group together on lists) --------
|
||
|
|
{ id: "salmon", name: "Frozen Atlantic Salmon Fillets", aisle: "Seafood", packageSize: 2 * LB, baseUnit: "g", packageLabel: "2 lb bag", price: 15.99 },
|
||
|
|
{ id: "tilapia", name: "Frozen Tilapia Fillets", aisle: "Seafood", packageSize: 2 * LB, baseUnit: "g", packageLabel: "2 lb bag", price: 8.99 },
|
||
|
|
{ id: "pollock", name: "Frozen Wild Alaska Pollock Fillets", aisle: "Seafood", packageSize: 2 * LB, baseUnit: "g", packageLabel: "2 lb bag", price: 7.99 },
|
||
|
|
{ id: "canned_tuna", name: "Chunk Light Tuna in Water", aisle: "Seafood", packageSize: 1, baseUnit: "each", packageLabel: "5 oz can", price: 1.29 },
|
||
|
|
{ id: "canned_clams", name: "Chopped Clams, canned", aisle: "Seafood", packageSize: 1, baseUnit: "each", packageLabel: "6.5 oz can", price: 2.19 },
|
||
|
|
{ id: "imitation_crab", name: "Imitation Crab (Flake Style)", aisle: "Seafood", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz pack", price: 3.99 },
|
||
|
|
{ id: "old_bay", name: "Old Bay Seafood Seasoning", aisle: "Spices & Sauces", packageSize: 6 * OZ, baseUnit: "g", packageLabel: "6 oz can", price: 4.49, gramsPerMl: 0.6 },
|
||
|
|
{ id: "mayo", name: "Mayonnaise", aisle: "Spices & Sauces", packageSize: 30 * FL_OZ, baseUnit: "ml", packageLabel: "30 oz jar", price: 4.29 },
|
||
|
|
{ id: "seaweed_snacks", name: "Roasted Seaweed Snack Sheets", aisle: "International", packageSize: 1, baseUnit: "each", packageLabel: "0.35 oz pack", price: 1.39 },
|
||
|
|
{ id: "avocado", name: "Hass Avocado", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 1.25 },
|
||
|
|
|
||
|
|
// --- Cayden's Corner (family recipes) --------------------------------------------
|
||
|
|
// Meat & seafood
|
||
|
|
{ id: "italian_sausage", name: "Mild Italian Sausage (bulk)", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb roll", price: 4.69 },
|
||
|
|
{ id: "turkey_sausage", name: "Smoked Turkey Sausage", aisle: "Meat & Eggs", packageSize: 13 * OZ, baseUnit: "g", packageLabel: "13 oz rope", price: 3.79 },
|
||
|
|
{ id: "pork_tenderloin", name: "Pork Tenderloin", aisle: "Meat & Eggs", packageSize: 1.25 * LB, baseUnit: "g", packageLabel: "~1.25 lb", price: 6.49 },
|
||
|
|
{ id: "bottom_round_roast", name: "Beef Bottom Round Roast", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "per lb", price: 7.49 },
|
||
|
|
{ id: "rib_roast", name: "Beef Standing Rib Roast", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "per lb", price: 15.99 },
|
||
|
|
{ id: "spiral_ham", name: "Spiral-Sliced Bone-In Half Ham", aisle: "Meat & Eggs", packageSize: 8 * LB, baseUnit: "g", packageLabel: "~8 lb", price: 21.99 },
|
||
|
|
{ id: "deli_ham", name: "Sliced Deli Ham", aisle: "Meat & Eggs", packageSize: 9 * OZ, baseUnit: "g", packageLabel: "9 oz tub", price: 4.29 },
|
||
|
|
{ id: "bacon_bits", name: "Real Bacon Bits", aisle: "Pantry", packageSize: 3 * OZ, baseUnit: "g", packageLabel: "3 oz pouch", price: 3.29, gramsPerMl: 0.3 },
|
||
|
|
{ id: "canned_crab", name: "Lump Crabmeat, canned", aisle: "Seafood", packageSize: 6 * OZ, baseUnit: "g", packageLabel: "6 oz can", price: 6.99 },
|
||
|
|
// Dairy
|
||
|
|
{ id: "swiss_cheese", name: "Sliced Swiss Cheese", aisle: "Dairy", packageSize: 10, baseUnit: "each", packageLabel: "10 slices", price: 3.49 },
|
||
|
|
{ id: "romano", name: "Grated Romano Cheese", aisle: "Dairy", packageSize: 5 * OZ, baseUnit: "g", packageLabel: "5 oz", price: 3.99, gramsPerMl: 0.42 },
|
||
|
|
{ id: "buttermilk", name: "Buttermilk", aisle: "Dairy", packageSize: 32 * FL_OZ, baseUnit: "ml", packageLabel: "1 quart", price: 2.69 },
|
||
|
|
{ id: "evaporated_milk", name: "Evaporated Milk", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "12 oz can", price: 1.49 },
|
||
|
|
// Produce & frozen
|
||
|
|
{ id: "shallots", name: "Shallot", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.89 },
|
||
|
|
{ id: "fresh_parsley", name: "Fresh Parsley", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "1 bunch", price: 1.19 },
|
||
|
|
{ id: "fresh_rosemary", name: "Fresh Rosemary", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "0.75 oz pack", price: 2.79 },
|
||
|
|
{ id: "fresh_thyme", name: "Fresh Thyme", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "0.75 oz pack", price: 2.79 },
|
||
|
|
{ id: "frozen_spinach", name: "Frozen Chopped Spinach", aisle: "Frozen", packageSize: 10 * OZ, baseUnit: "g", packageLabel: "10 oz box", price: 1.59, gramsPerMl: 0.6 },
|
||
|
|
// Pantry: cans, jars, condiments
|
||
|
|
{ id: "capers", name: "Capers", aisle: "Pantry", packageSize: 3.5 * OZ, baseUnit: "g", packageLabel: "3.5 oz jar", price: 2.99, gramsPerMl: 0.6 },
|
||
|
|
{ id: "white_wine", name: "Dry White Wine (or cooking wine)", aisle: "Pantry", packageSize: 750, baseUnit: "ml", packageLabel: "750 ml bottle", price: 6.99 },
|
||
|
|
{ id: "sangria", name: "Sangria Wine", aisle: "Pantry", packageSize: 750, baseUnit: "ml", packageLabel: "750 ml bottle", price: 6.99 },
|
||
|
|
{ id: "chicken_bouillon", name: "Chicken Bouillon Granules", aisle: "Pantry", packageSize: 3.75 * OZ, baseUnit: "g", packageLabel: "3.75 oz jar", price: 1.99, gramsPerMl: 0.8 },
|
||
|
|
{ id: "sun_dried_tomatoes", name: "Sun-Dried Tomatoes in Oil", aisle: "Pantry", packageSize: 8.5 * OZ, baseUnit: "g", packageLabel: "8.5 oz jar", price: 4.49, gramsPerMl: 0.5 },
|
||
|
|
{ id: "spanish_olives", name: "Spanish Olives (pitted)", aisle: "Pantry", packageSize: 5.75 * OZ, baseUnit: "g", packageLabel: "5.75 oz jar", price: 2.69, gramsPerMl: 0.6 },
|
||
|
|
{ id: "black_olives", name: "Sliced Black Olives", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "6 oz can", price: 1.79 },
|
||
|
|
{ id: "artichoke_hearts", name: "Artichoke Hearts, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "14 oz can", price: 2.99 },
|
||
|
|
{ id: "french_fried_onions", name: "French Fried Onions", aisle: "Pantry", packageSize: 6 * OZ, baseUnit: "g", packageLabel: "6 oz canister", price: 3.99 },
|
||
|
|
{ id: "rotel", name: "Diced Tomatoes & Green Chiles", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "10 oz can", price: 1.35 },
|
||
|
|
{ id: "stewed_tomatoes", name: "Italian-Style Stewed Tomatoes", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "14.5 oz can", price: 1.39 },
|
||
|
|
{ id: "mango_peach_salsa", name: "Mango Peach Salsa", aisle: "International", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz jar", price: 3.49, gramsPerMl: 1.05 },
|
||
|
|
{ id: "balsamic_vinegar", name: "Balsamic Vinegar", aisle: "Spices & Sauces", packageSize: 500, baseUnit: "ml", packageLabel: "16.9 oz bottle", price: 3.69 },
|
||
|
|
{ id: "dijon_mustard", name: "Dijon Mustard", aisle: "Spices & Sauces", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz jar", price: 2.49, gramsPerMl: 1.05 },
|
||
|
|
{ id: "horseradish", name: "Prepared Horseradish", aisle: "Spices & Sauces", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz jar", price: 2.69, gramsPerMl: 1.0 },
|
||
|
|
{ id: "chili_oil", name: "Chili Oil", aisle: "International", packageSize: 207, baseUnit: "ml", packageLabel: "7 oz bottle", price: 3.99 },
|
||
|
|
{ id: "crackers", name: "Butter Crackers", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "13.7 oz box", price: 3.49 },
|
||
|
|
{ id: "saltines", name: "Saltine Crackers", aisle: "Pantry", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz box", price: 2.99 },
|
||
|
|
// Baking
|
||
|
|
{ id: "baking_soda", name: "Baking Soda", aisle: "Pantry", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb box", price: 1.19, gramsPerMl: 1.0, pantryStaple: true },
|
||
|
|
{ id: "vanilla_extract", name: "Vanilla Extract", aisle: "Pantry", packageSize: 2 * FL_OZ, baseUnit: "ml", packageLabel: "2 oz bottle", price: 5.49 },
|
||
|
|
{ id: "mint_extract", name: "Pure Peppermint Extract", aisle: "Pantry", packageSize: 1 * FL_OZ, baseUnit: "ml", packageLabel: "1 oz bottle", price: 3.99 },
|
||
|
|
{ id: "powdered_sugar", name: "Powdered Sugar", aisle: "Pantry", packageSize: 2 * LB, baseUnit: "g", packageLabel: "2 lb bag", price: 2.59, gramsPerMl: 0.5 },
|
||
|
|
{ id: "shortening", name: "Vegetable Shortening", aisle: "Pantry", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz can", price: 3.79, gramsPerMl: 0.8 },
|
||
|
|
{ id: "molasses", name: "Molasses", aisle: "Pantry", packageSize: 12 * FL_OZ, baseUnit: "ml", packageLabel: "12 oz bottle", price: 4.29 },
|
||
|
|
{ id: "pecans", name: "Chopped Pecans", aisle: "Pantry", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz bag", price: 5.99, gramsPerMl: 0.45 },
|
||
|
|
{ id: "marshmallow_creme", name: "Marshmallow Creme", aisle: "Pantry", packageSize: 7 * OZ, baseUnit: "g", packageLabel: "7 oz jar", price: 2.29, gramsPerMl: 0.37 },
|
||
|
|
{ id: "german_chocolate", name: "German Sweet Chocolate Bar", aisle: "Pantry", packageSize: 4 * OZ, baseUnit: "g", packageLabel: "4 oz bar", price: 3.49 },
|
||
|
|
{ id: "dark_chocolate_chips", name: "Dark Chocolate Chips", aisle: "Pantry", packageSize: 10 * OZ, baseUnit: "g", packageLabel: "10 oz bag", price: 3.99, gramsPerMl: 0.7 },
|
||
|
|
{ id: "caramels", name: "Milk Caramels", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "11 oz bag", price: 3.49 },
|
||
|
|
{ id: "peppermint_kisses", name: "Candy Cane Kisses", aisle: "Pantry", packageSize: 45, baseUnit: "each", packageLabel: "9 oz bag (~45)", price: 4.49 },
|
||
|
|
// Spices
|
||
|
|
{ id: "cayenne", name: "Ground Cayenne Pepper", aisle: "Spices & Sauces", packageSize: 1.5 * OZ, baseUnit: "g", packageLabel: "1.5 oz", price: 1.99, gramsPerMl: 0.45 },
|
||
|
|
{ id: "coriander", name: "Ground Coriander", aisle: "Spices & Sauces", packageSize: 0.9 * OZ, baseUnit: "g", packageLabel: "0.9 oz", price: 2.29, gramsPerMl: 0.4 },
|
||
|
|
{ id: "nutmeg", name: "Ground Nutmeg", aisle: "Spices & Sauces", packageSize: 1.1 * OZ, baseUnit: "g", packageLabel: "1.1 oz", price: 3.49, gramsPerMl: 0.45 },
|
||
|
|
{ id: "ground_ginger", name: "Ground Ginger", aisle: "Spices & Sauces", packageSize: 0.8 * OZ, baseUnit: "g", packageLabel: "0.8 oz", price: 2.29, gramsPerMl: 0.45 },
|
||
|
|
{ id: "onion_powder", name: "Onion Powder", aisle: "Spices & Sauces", packageSize: 2.6 * OZ, baseUnit: "g", packageLabel: "2.6 oz", price: 1.99, gramsPerMl: 0.45 },
|
||
|
|
{ id: "garlic_salt", name: "Garlic Salt", aisle: "Spices & Sauces", packageSize: 3.25 * OZ, baseUnit: "g", packageLabel: "3.25 oz", price: 1.89, gramsPerMl: 1.0 },
|
||
|
|
{ id: "dried_oregano", name: "Dried Oregano", aisle: "Spices & Sauces", packageSize: 0.87 * OZ, baseUnit: "g", packageLabel: "0.87 oz", price: 1.89, gramsPerMl: 0.25 },
|
||
|
|
{ id: "dried_basil", name: "Dried Basil", aisle: "Spices & Sauces", packageSize: 0.62 * OZ, baseUnit: "g", packageLabel: "0.62 oz", price: 1.89, gramsPerMl: 0.25 },
|
||
|
|
{ id: "dried_thyme", name: "Dried Thyme", aisle: "Spices & Sauces", packageSize: 0.75 * OZ, baseUnit: "g", packageLabel: "0.75 oz", price: 1.89, gramsPerMl: 0.3 },
|
||
|
|
{ id: "dried_parsley", name: "Dried Parsley Flakes", aisle: "Spices & Sauces", packageSize: 0.5 * OZ, baseUnit: "g", packageLabel: "0.5 oz", price: 1.89, gramsPerMl: 0.1 },
|
||
|
|
{ id: "dried_rosemary", name: "Dried Rosemary", aisle: "Spices & Sauces", packageSize: 0.75 * OZ, baseUnit: "g", packageLabel: "0.75 oz", price: 1.89, gramsPerMl: 0.25 },
|
||
|
|
|
||
|
|
// --- Big recipe expansion ------------------------------------------------------
|
||
|
|
// Meat & deli
|
||
|
|
{ id: "rotisserie_chicken", name: "Rotisserie Chicken (meat only)", aisle: "Meat & Eggs", packageSize: 1.5 * LB, baseUnit: "g", packageLabel: "1 whole bird (~1.5 lb meat)", price: 6.99, gramsPerMl: 0.59 },
|
||
|
|
{ id: "chicken_drumsticks", name: "Chicken Drumsticks", aisle: "Meat & Eggs", packageSize: 3 * LB, baseUnit: "g", packageLabel: "3 lb family pack", price: 5.22 },
|
||
|
|
{ id: "ground_chicken", name: "Ground Chicken", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb pack", price: 4.99 },
|
||
|
|
{ id: "pork_chops", name: "Boneless Pork Chops", aisle: "Meat & Eggs", packageSize: 2 * LB, baseUnit: "g", packageLabel: "2 lb pack", price: 9.1 },
|
||
|
|
{ id: "beef_stew_meat", name: "Beef Stew Meat", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb tray", price: 7.99 },
|
||
|
|
{ id: "diced_ham", name: "Diced Ham", aisle: "Meat & Eggs", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz pack", price: 3.29, gramsPerMl: 0.6 },
|
||
|
|
{ id: "hot_dogs", name: "Beef Franks", aisle: "Meat & Eggs", packageSize: 8, baseUnit: "each", packageLabel: "8 ct", price: 4.49 },
|
||
|
|
{ id: "frozen_meatballs", name: "Frozen Homestyle Meatballs", aisle: "Frozen", packageSize: 26 * OZ, baseUnit: "g", packageLabel: "26 oz bag", price: 6.49 },
|
||
|
|
{ id: "chorizo", name: "Pork Chorizo", aisle: "Meat & Eggs", packageSize: 9 * OZ, baseUnit: "g", packageLabel: "9 oz pack", price: 2.79 },
|
||
|
|
{ id: "pepperoni", name: "Sliced Pepperoni", aisle: "Meat & Eggs", packageSize: 6 * OZ, baseUnit: "g", packageLabel: "6 oz pack", price: 3.29 },
|
||
|
|
{ id: "deli_turkey", name: "Sliced Deli Turkey", aisle: "Meat & Eggs", packageSize: 9 * OZ, baseUnit: "g", packageLabel: "9 oz tub", price: 4.29 },
|
||
|
|
{ id: "canned_chicken", name: "Chunk Chicken Breast, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "12.5 oz can", price: 2.99 },
|
||
|
|
{ id: "spam", name: "Spam Classic", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "12 oz can", price: 3.79 },
|
||
|
|
// Seafood
|
||
|
|
{ id: "fish_sticks", name: "Frozen Breaded Fish Sticks", aisle: "Seafood", packageSize: 24.6 * OZ, baseUnit: "g", packageLabel: "24.6 oz box", price: 5.99 },
|
||
|
|
{ id: "canned_salmon", name: "Pink Salmon, canned", aisle: "Seafood", packageSize: 1, baseUnit: "each", packageLabel: "14.75 oz can", price: 4.29 },
|
||
|
|
// Dairy & refrigerated
|
||
|
|
{ id: "cream_cheese", name: "Cream Cheese", aisle: "Dairy", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz brick", price: 2.69, gramsPerMl: 0.95 },
|
||
|
|
{ id: "ricotta", name: "Whole Milk Ricotta", aisle: "Dairy", packageSize: 15 * OZ, baseUnit: "g", packageLabel: "15 oz tub", price: 3.49, gramsPerMl: 1.0 },
|
||
|
|
{ id: "biscuit_dough", name: "Refrigerated Biscuits", aisle: "Dairy", packageSize: 8, baseUnit: "each", packageLabel: "8 ct can", price: 1.99 },
|
||
|
|
{ id: "crescent_rolls", name: "Refrigerated Crescent Rolls", aisle: "Dairy", packageSize: 8, baseUnit: "each", packageLabel: "8 ct can", price: 2.79 },
|
||
|
|
{ id: "pizza_dough", name: "Refrigerated Pizza Crust", aisle: "Dairy", packageSize: 1, baseUnit: "each", packageLabel: "13.8 oz can", price: 2.99 },
|
||
|
|
{ id: "tortellini", name: "Refrigerated Cheese Tortellini", aisle: "Dairy", packageSize: 20 * OZ, baseUnit: "g", packageLabel: "20 oz pack", price: 4.79 },
|
||
|
|
{ id: "gnocchi", name: "Potato Gnocchi", aisle: "Pantry", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz pack", price: 2.79 },
|
||
|
|
// Produce
|
||
|
|
{ id: "mushrooms", name: "White Mushrooms", aisle: "Produce", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz pack", price: 2.39, gramsPerMl: 0.3 },
|
||
|
|
{ id: "zucchini", name: "Zucchini", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 1.09 },
|
||
|
|
{ id: "cabbage", name: "Green Cabbage", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "1 head", price: 2.29 },
|
||
|
|
{ id: "romaine", name: "Romaine Hearts", aisle: "Produce", packageSize: 3, baseUnit: "each", packageLabel: "3 ct bag", price: 3.49 },
|
||
|
|
{ id: "apples", name: "Gala Apple", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.79 },
|
||
|
|
// Frozen
|
||
|
|
{ id: "frozen_peas", name: "Frozen Sweet Peas", aisle: "Frozen", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 1.69, gramsPerMl: 0.6 },
|
||
|
|
{ id: "frozen_green_beans", name: "Frozen Cut Green Beans", aisle: "Frozen", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 1.69 },
|
||
|
|
{ id: "frozen_hash_browns", name: "Frozen Shredded Hash Browns", aisle: "Frozen", packageSize: 30 * OZ, baseUnit: "g", packageLabel: "30 oz bag", price: 3.49, gramsPerMl: 0.4 },
|
||
|
|
{ id: "frozen_fries", name: "Frozen Crinkle Fries", aisle: "Frozen", packageSize: 32 * OZ, baseUnit: "g", packageLabel: "32 oz bag", price: 3.69 },
|
||
|
|
{ id: "potstickers", name: "Frozen Pork Potstickers", aisle: "Frozen", packageSize: 20 * OZ, baseUnit: "g", packageLabel: "20 oz bag", price: 6.29 },
|
||
|
|
{ id: "cauliflower_rice", name: "Frozen Riced Cauliflower", aisle: "Frozen", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 2.39 },
|
||
|
|
// Bakery & bread
|
||
|
|
{ id: "corn_tortillas", name: "White Corn Tortillas", aisle: "Bakery", packageSize: 30, baseUnit: "each", packageLabel: "30 ct", price: 2.49 },
|
||
|
|
{ id: "hamburger_buns", name: "Hamburger Buns", aisle: "Bakery", packageSize: 8, baseUnit: "each", packageLabel: "8 ct", price: 2.19 },
|
||
|
|
{ id: "hot_dog_buns", name: "Hot Dog Buns", aisle: "Bakery", packageSize: 8, baseUnit: "each", packageLabel: "8 ct", price: 2.19 },
|
||
|
|
{ id: "hoagie_rolls", name: "Hoagie Rolls", aisle: "Bakery", packageSize: 6, baseUnit: "each", packageLabel: "6 ct", price: 2.99 },
|
||
|
|
{ id: "english_muffins", name: "English Muffins", aisle: "Bakery", packageSize: 6, baseUnit: "each", packageLabel: "6 ct", price: 2.49 },
|
||
|
|
{ id: "bagels", name: "Plain Bagels", aisle: "Bakery", packageSize: 6, baseUnit: "each", packageLabel: "6 ct", price: 3.29 },
|
||
|
|
{ id: "naan", name: "Garlic Naan", aisle: "Bakery", packageSize: 4, baseUnit: "each", packageLabel: "4 ct", price: 4.29 },
|
||
|
|
// Pantry: grains & pasta
|
||
|
|
{ id: "egg_noodles", name: "Wide Egg Noodles", aisle: "Pantry", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 2.19 },
|
||
|
|
{ id: "lasagna_noodles", name: "Lasagna Noodles", aisle: "Pantry", packageSize: 1 * LB, baseUnit: "g", packageLabel: "16 oz box", price: 1.89 },
|
||
|
|
{ id: "rice_noodles", name: "Thin Rice Noodles", aisle: "International", packageSize: 14 * OZ, baseUnit: "g", packageLabel: "14 oz pack", price: 2.99 },
|
||
|
|
{ id: "quinoa", name: "Quinoa", aisle: "Pantry", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 3.99, gramsPerMl: 0.72 },
|
||
|
|
{ id: "couscous", name: "Couscous", aisle: "Pantry", packageSize: 10 * OZ, baseUnit: "g", packageLabel: "10 oz box", price: 2.79, gramsPerMl: 0.73 },
|
||
|
|
{ id: "panko", name: "Panko Breadcrumbs", aisle: "Pantry", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz canister", price: 2.49, gramsPerMl: 0.25 },
|
||
|
|
{ id: "tortilla_chips", name: "Tortilla Chips", aisle: "Pantry", packageSize: 13 * OZ, baseUnit: "g", packageLabel: "13 oz bag", price: 3.29 },
|
||
|
|
{ id: "granola", name: "Oats & Honey Granola", aisle: "Pantry", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 3.99, gramsPerMl: 0.4 },
|
||
|
|
{ id: "chocolate_chips", name: "Semi-Sweet Chocolate Chips", aisle: "Pantry", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 3.69, gramsPerMl: 0.7 },
|
||
|
|
{ id: "cornbread_mix", name: "Cornbread Muffin Mix", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "8.5 oz box", price: 0.89 },
|
||
|
|
{ id: "sugar", name: "Granulated Sugar", aisle: "Pantry", packageSize: 4 * LB, baseUnit: "g", packageLabel: "4 lb bag", price: 4.08, gramsPerMl: 0.85, pantryStaple: true },
|
||
|
|
// Pantry: cans & jars
|
||
|
|
{ id: "cream_of_mushroom", name: "Cream of Mushroom Soup", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "10.5 oz can", price: 1.39 },
|
||
|
|
{ id: "cream_of_chicken", name: "Cream of Chicken Soup", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "10.5 oz can", price: 1.39 },
|
||
|
|
{ id: "refried_beans", name: "Refried Beans", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "16 oz can", price: 1.39 },
|
||
|
|
{ id: "pinto_beans", name: "Pinto Beans, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "15.5 oz can", price: 1.15 },
|
||
|
|
{ id: "white_beans", name: "Cannellini Beans, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "15.5 oz can", price: 1.19 },
|
||
|
|
{ id: "green_chiles", name: "Diced Green Chiles", aisle: "International", packageSize: 1, baseUnit: "each", packageLabel: "4 oz can", price: 1.25 },
|
||
|
|
{ id: "chipotle_adobo", name: "Chipotle Peppers in Adobo", aisle: "International", packageSize: 1, baseUnit: "each", packageLabel: "7 oz can", price: 1.99 },
|
||
|
|
{ id: "salsa_verde", name: "Salsa Verde", aisle: "International", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz jar", price: 2.89, gramsPerMl: 1.05 },
|
||
|
|
{ id: "alfredo_sauce", name: "Alfredo Pasta Sauce", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "15 oz jar", price: 2.69 },
|
||
|
|
{ id: "tomato_sauce", name: "Tomato Sauce, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "15 oz can", price: 1.05 },
|
||
|
|
{ id: "canned_pumpkin", name: "Pure Pumpkin, canned", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "15 oz can", price: 2.29 },
|
||
|
|
// Sauces & condiments
|
||
|
|
{ id: "ketchup", name: "Ketchup", aisle: "Spices & Sauces", packageSize: 38 * OZ, baseUnit: "g", packageLabel: "38 oz bottle", price: 3.19, gramsPerMl: 1.15 },
|
||
|
|
{ id: "mustard", name: "Yellow Mustard", aisle: "Spices & Sauces", packageSize: 20 * OZ, baseUnit: "g", packageLabel: "20 oz bottle", price: 1.49, gramsPerMl: 1.05 },
|
||
|
|
{ id: "worcestershire", name: "Worcestershire Sauce", aisle: "Spices & Sauces", packageSize: 10 * FL_OZ, baseUnit: "ml", packageLabel: "10 oz bottle", price: 2.39 },
|
||
|
|
{ id: "hot_sauce", name: "Louisiana Hot Sauce", aisle: "Spices & Sauces", packageSize: 12 * FL_OZ, baseUnit: "ml", packageLabel: "12 oz bottle", price: 1.79 },
|
||
|
|
{ id: "buffalo_sauce", name: "Buffalo Wing Sauce", aisle: "Spices & Sauces", packageSize: 12 * FL_OZ, baseUnit: "ml", packageLabel: "12 oz bottle", price: 2.89 },
|
||
|
|
{ id: "ranch", name: "Ranch Dressing", aisle: "Spices & Sauces", packageSize: 16 * FL_OZ, baseUnit: "ml", packageLabel: "16 oz bottle", price: 2.79 },
|
||
|
|
{ id: "italian_dressing", name: "Italian Dressing", aisle: "Spices & Sauces", packageSize: 16 * FL_OZ, baseUnit: "ml", packageLabel: "16 oz bottle", price: 1.99 },
|
||
|
|
{ id: "apple_cider_vinegar", name: "Apple Cider Vinegar", aisle: "Spices & Sauces", packageSize: 16 * FL_OZ, baseUnit: "ml", packageLabel: "16 oz bottle", price: 1.99 },
|
||
|
|
{ id: "hoisin", name: "Hoisin Sauce", aisle: "International", packageSize: 8.5 * OZ, baseUnit: "g", packageLabel: "8.5 oz jar", price: 3.49, gramsPerMl: 1.2 },
|
||
|
|
{ id: "oyster_sauce", name: "Oyster Sauce", aisle: "International", packageSize: 9 * OZ, baseUnit: "g", packageLabel: "9 oz bottle", price: 2.99, gramsPerMl: 1.2 },
|
||
|
|
{ id: "sweet_chili_sauce", name: "Sweet Chili Sauce", aisle: "International", packageSize: 12 * FL_OZ, baseUnit: "ml", packageLabel: "12 oz bottle", price: 2.99 },
|
||
|
|
{ id: "miso", name: "White Miso Paste", aisle: "International", packageSize: 14 * OZ, baseUnit: "g", packageLabel: "14 oz tub", price: 5.49, gramsPerMl: 1.15 },
|
||
|
|
{ id: "garlic_powder", name: "Garlic Powder", aisle: "Spices & Sauces", packageSize: 3.4 * OZ, baseUnit: "g", packageLabel: "3.4 oz", price: 1.99, gramsPerMl: 0.5 },
|
||
|
|
{ id: "red_pepper_flakes", name: "Crushed Red Pepper", aisle: "Spices & Sauces", packageSize: 1.5 * OZ, baseUnit: "g", packageLabel: "1.5 oz", price: 1.89, gramsPerMl: 0.4 },
|
||
|
|
|
||
|
|
// --- Added for the expanded cuisines ------------------------------------------
|
||
|
|
{ id: "ground_pork", name: "Ground Pork", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb pack", price: 4.19 },
|
||
|
|
{ id: "breakfast_sausage", name: "Original Pork Sausage Roll", aisle: "Meat & Eggs", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb roll", price: 3.99 },
|
||
|
|
{ id: "shrimp", name: "Frozen Raw Shrimp, peeled & deveined", aisle: "Seafood", packageSize: 1 * LB, baseUnit: "g", packageLabel: "1 lb bag", price: 7.99 },
|
||
|
|
{ id: "feta", name: "Crumbled Feta", aisle: "Dairy", packageSize: 4 * OZ, baseUnit: "g", packageLabel: "4 oz tub", price: 3.29, gramsPerMl: 0.53 },
|
||
|
|
{ id: "cucumber", name: "Cucumber", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.89 },
|
||
|
|
{ id: "roma_tomatoes", name: "Roma Tomato", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.48 },
|
||
|
|
{ id: "fresh_basil", name: "Fresh Basil", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "0.75 oz clamshell", price: 2.79 },
|
||
|
|
{ id: "jalapeno", name: "Jalapeño Pepper", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.25 },
|
||
|
|
{ id: "cilantro", name: "Cilantro", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "1 bunch", price: 0.89 },
|
||
|
|
{ id: "sweet_potatoes", name: "Sweet Potato", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each (~0.7 lb)", price: 0.99 },
|
||
|
|
{ id: "plantains", name: "Plantain", aisle: "Produce", packageSize: 1, baseUnit: "each", packageLabel: "each", price: 0.69 },
|
||
|
|
{ id: "frozen_corn", name: "Frozen Sweet Corn", aisle: "Frozen", packageSize: 12 * OZ, baseUnit: "g", packageLabel: "12 oz bag", price: 1.69, gramsPerMl: 0.6 },
|
||
|
|
{ id: "grits", name: "Quick Grits", aisle: "Pantry", packageSize: 24 * OZ, baseUnit: "g", packageLabel: "24 oz canister", price: 2.69, gramsPerMl: 0.66 },
|
||
|
|
{ id: "pita_bread", name: "Pita Bread", aisle: "Bakery", packageSize: 6, baseUnit: "each", packageLabel: "6 ct", price: 2.99 },
|
||
|
|
{ id: "instant_ramen", name: "Instant Ramen Noodles", aisle: "International", packageSize: 1, baseUnit: "each", packageLabel: "3 oz pack", price: 0.45 },
|
||
|
|
{ id: "peanuts", name: "Dry Roasted Peanuts", aisle: "Pantry", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz jar", price: 3.29, gramsPerMl: 0.6 },
|
||
|
|
{ id: "pineapple", name: "Pineapple, canned (chunks or slices)", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "20 oz can", price: 1.89 },
|
||
|
|
{ id: "tomato_paste", name: "Tomato Paste", aisle: "Pantry", packageSize: 1, baseUnit: "each", packageLabel: "6 oz can", price: 0.99 },
|
||
|
|
{ id: "enchilada_sauce", name: "Red Enchilada Sauce", aisle: "International", packageSize: 1, baseUnit: "each", packageLabel: "10 oz can", price: 1.59 },
|
||
|
|
{ id: "sesame_oil", name: "Toasted Sesame Oil", aisle: "International", packageSize: 5 * FL_OZ, baseUnit: "ml", packageLabel: "5 oz bottle", price: 3.49 },
|
||
|
|
{ id: "rice_vinegar", name: "Rice Vinegar", aisle: "International", packageSize: 12 * FL_OZ, baseUnit: "ml", packageLabel: "12 oz bottle", price: 2.79 },
|
||
|
|
{ id: "teriyaki_sauce", name: "Teriyaki Sauce", aisle: "International", packageSize: 10 * FL_OZ, baseUnit: "ml", packageLabel: "10 oz bottle", price: 2.49 },
|
||
|
|
{ id: "fish_sauce", name: "Fish Sauce", aisle: "International", packageSize: 200, baseUnit: "ml", packageLabel: "6.76 oz bottle", price: 3.29 },
|
||
|
|
{ id: "sriracha", name: "Sriracha Hot Chili Sauce", aisle: "International", packageSize: 17 * OZ, baseUnit: "g", packageLabel: "17 oz bottle", price: 3.79, gramsPerMl: 1.1 },
|
||
|
|
{ id: "gochujang", name: "Gochujang (Korean Chili Paste)", aisle: "International", packageSize: 500, baseUnit: "g", packageLabel: "17.6 oz tub", price: 6.49, gramsPerMl: 1.2 },
|
||
|
|
{ id: "kimchi", name: "Napa Cabbage Kimchi", aisle: "International", packageSize: 14 * OZ, baseUnit: "g", packageLabel: "14 oz jar", price: 5.49, gramsPerMl: 0.75 },
|
||
|
|
{ id: "red_curry_paste", name: "Thai Red Curry Paste", aisle: "International", packageSize: 4 * OZ, baseUnit: "g", packageLabel: "4 oz jar", price: 3.69, gramsPerMl: 1.1 },
|
||
|
|
{ id: "ginger_paste", name: "Ginger Paste (tube)", aisle: "Produce", packageSize: 4 * OZ, baseUnit: "g", packageLabel: "4 oz tube", price: 3.79, gramsPerMl: 1.1 },
|
||
|
|
{ id: "cajun_seasoning", name: "Creole / Cajun Seasoning", aisle: "Spices & Sauces", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz canister", price: 3.29, gramsPerMl: 0.6 },
|
||
|
|
{ id: "jerk_seasoning", name: "Jamaican Jerk Seasoning", aisle: "Spices & Sauces", packageSize: 3 * OZ, baseUnit: "g", packageLabel: "3 oz", price: 2.79, gramsPerMl: 0.5 },
|
||
|
|
{ id: "frozen_mango", name: "Frozen Mango Chunks", aisle: "Frozen", packageSize: 16 * OZ, baseUnit: "g", packageLabel: "16 oz bag", price: 3.99, gramsPerMl: 0.6 },
|
||
|
|
{ id: "orange_juice", name: "100% Orange Juice", aisle: "Dairy", packageSize: 52 * FL_OZ, baseUnit: "ml", packageLabel: "52 oz bottle", price: 4.49 },
|
||
|
|
{ id: "almond_milk", name: "Unsweetened Almond Milk", aisle: "Dairy", packageSize: 64 * FL_OZ, baseUnit: "ml", packageLabel: "half gallon", price: 2.99 },
|
||
|
|
{ id: "cocoa_powder", name: "Unsweetened Cocoa Powder", aisle: "Pantry", packageSize: 8 * OZ, baseUnit: "g", packageLabel: "8 oz canister", price: 4.49, gramsPerMl: 0.36 },
|
||
|
|
{ id: "cinnamon", name: "Ground Cinnamon", aisle: "Spices & Sauces", packageSize: 2.37 * OZ, baseUnit: "g", packageLabel: "2.37 oz", price: 1.99, gramsPerMl: 0.53 },
|
||
|
|
];
|
||
|
|
|
||
|
|
export const CATALOG_BY_ID: ReadonlyMap<ItemId, StoreItem> = new Map(CATALOG.map((item) => [item.id, item]));
|
||
|
|
|
||
|
|
/** Default "have it" list for new users: the basic pantry staples. */
|
||
|
|
export const PANTRY_STAPLE_IDS: ItemId[] = CATALOG.filter((item) => item.pantryStaple).map((item) => item.id);
|