payfrit-works/api/setup/bigdeans_import.json
John Mizerek 51a80b537d Add local dev support and fix menu builder API
Portal local development:
- Add BASE_PATH detection to all portal files (login, portal.js, menu-builder, station-assignment)
- Allows portal to work at /biz.payfrit.com/ path locally

Menu Builder fixes:
- Fix duplicate template options in getForBuilder.cfm query
- Filter template children by business ID with DISTINCT

New APIs:
- api/portal/myBusinesses.cfm - List businesses for logged-in user
- api/stations/list.cfm - List KDS stations
- api/menu/updateStations.cfm - Update item station assignments
- api/setup/reimportBigDeans.cfm - Full Big Dean's menu import script

Admin utilities:
- Various debug and migration scripts for menu/template management
- Beacon switching, category cleanup, modifier template setup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 22:47:12 -08:00

341 lines
18 KiB
JSON

{
"business": {
"name": "Big Dean's Ocean Front Cafe",
"address": "1615 Ocean Front Walk",
"city": "Santa Monica",
"state": "CA",
"zip": "90401",
"phone": "(310) 393-2666",
"email": "mack@payfrit.com",
"ownerPhone": "9494442935",
"website": "https://bigdeansoceanfrontcafe.com",
"logoUrl": "https://bigdeansoceanfrontcafe.com/wp-content/uploads/2025/04/Logo_Smaller_92x87.png",
"headerUrl": "https://bigdeansoceanfrontcafe.com/wp-content/uploads/2025/04/TopBanner___BIGDEANS___.jpg"
},
"modifierTemplates": [
{
"id": "wing_style",
"name": "Wing Style",
"required": true,
"maxSelections": 1,
"options": [
{ "name": "Bone-In", "price": 0, "isDefault": true },
{ "name": "Boneless", "price": 0, "isDefault": false }
]
},
{
"id": "size_regular_small",
"name": "Size",
"required": true,
"maxSelections": 1,
"options": [
{ "name": "Regular", "price": 0, "isDefault": true },
{ "name": "Small", "price": 0, "isDefault": false }
]
},
{
"id": "size_full_half",
"name": "Size",
"required": true,
"maxSelections": 1,
"options": [
{ "name": "Full Order", "price": 0, "isDefault": true },
{ "name": "Half Order", "price": 0, "isDefault": false }
]
},
{
"id": "protein_addon",
"name": "Add Protein",
"required": false,
"maxSelections": 1,
"options": [
{ "name": "Plain", "price": 0, "isDefault": true },
{ "name": "With Chicken", "price": 0, "isDefault": false },
{ "name": "With Steak or Shrimp", "price": 0, "isDefault": false }
]
},
{
"id": "guacamole_addon",
"name": "Guacamole",
"required": false,
"maxSelections": 1,
"options": [
{ "name": "No Guacamole", "price": 0, "isDefault": true },
{ "name": "With Guacamole", "price": 0, "isDefault": false }
]
},
{
"id": "hotdog_extras",
"name": "Extras",
"required": false,
"maxSelections": 0,
"options": [
{ "name": "Add Sauerkraut", "price": 0.50, "isDefault": false },
{ "name": "Add Cheese", "price": 0.50, "isDefault": false }
]
},
{
"id": "chili_fries_extras",
"name": "Extras",
"required": false,
"maxSelections": 0,
"options": [
{ "name": "Add Cheese", "price": 0, "isDefault": false },
{ "name": "Add Onions", "price": 0, "isDefault": false }
]
},
{
"id": "salad_protein",
"name": "Add Protein",
"required": false,
"maxSelections": 1,
"options": [
{ "name": "No Protein", "price": 0, "isDefault": true },
{ "name": "Chicken Breast or Burger Patty", "price": 0, "isDefault": false },
{ "name": "Grilled Shrimp", "price": 0, "isDefault": false },
{ "name": "Grilled Mahi Mahi", "price": 0, "isDefault": false }
]
},
{
"id": "salad_dressing",
"name": "Dressing",
"required": true,
"maxSelections": 1,
"options": [
{ "name": "Italian", "price": 0, "isDefault": false },
{ "name": "Ranch", "price": 0, "isDefault": true },
{ "name": "Balsamic", "price": 0, "isDefault": false },
{ "name": "Caesar", "price": 0, "isDefault": false },
{ "name": "Blue Cheese", "price": 0, "isDefault": false },
{ "name": "Thousand Island", "price": 0, "isDefault": false },
{ "name": "French", "price": 0, "isDefault": false }
]
},
{
"id": "sides_choice",
"name": "Sauce/Side",
"required": false,
"maxSelections": 1,
"options": [
{ "name": "Sour Cream", "price": 0.50, "isDefault": false },
{ "name": "Jalapenos", "price": 0.50, "isDefault": false },
{ "name": "BBQ Sauce", "price": 0.50, "isDefault": false },
{ "name": "Ranch", "price": 0.50, "isDefault": false },
{ "name": "Blue Cheese", "price": 0.50, "isDefault": false },
{ "name": "Mayo", "price": 0.50, "isDefault": false },
{ "name": "Aioli", "price": 0.50, "isDefault": false }
]
},
{
"id": "onion_style",
"name": "Onions",
"required": false,
"maxSelections": 1,
"options": [
{ "name": "No Onions", "price": 0, "isDefault": false },
{ "name": "Grilled Onions", "price": 0, "isDefault": true },
{ "name": "Raw Onions", "price": 0, "isDefault": false }
]
}
],
"categories": [
{
"name": "World Famous Burgers",
"categoryNote": "All burgers served with lettuce, tomato, Big Dean's sauce, and pickle spear. Grilled or raw onions available.",
"items": [
{ "name": "Big Dean's Burger", "description": "The burger that made Santa Monica famous!", "price": 0, "modifiers": ["onion_style"] },
{ "name": "Single Beef Burger with Cheese", "description": "", "price": 0, "modifiers": ["onion_style"] },
{ "name": "Single Beef Burger", "description": "", "price": 0, "modifiers": ["onion_style"] },
{ "name": "Beyond Burger", "description": "Vegan burger patty w/ lettuce, tomato, and pickle spear", "price": 0, "modifiers": ["onion_style"] },
{ "name": "Garden Burger", "description": "Vegetable patty prepared in the style of our burgers", "price": 0, "modifiers": ["onion_style"] },
{ "name": "Chili Size Burger", "description": "Beef burger served open faced topped with all beef chili, cheese, and onions", "price": 0, "modifiers": [] }
]
},
{
"name": "Snacks and Sides",
"categoryNote": "Sides: Sour Cream, Jalapenos, BBQ sauce, Ranch, Blue Cheese, Mayo, or Aioli - $0.50 each",
"items": [
{ "name": "Buffalo Wings", "description": "Boneless or bone in", "price": 0, "modifiers": ["wing_style"] },
{ "name": "Frings", "description": "1/2 French fries and 1/2 onion rings", "price": 0, "modifiers": [] },
{ "name": "French Fries", "description": "Small available", "price": 0, "modifiers": ["size_regular_small"] },
{ "name": "Onion Rings", "description": "Small available", "price": 0, "modifiers": ["size_regular_small"] },
{ "name": "Chili Fries", "description": "Add cheese and onions", "price": 0, "modifiers": ["chili_fries_extras"] },
{ "name": "Chicken Fingers and Fries", "description": "1/2 order available", "price": 0, "modifiers": ["size_full_half"] },
{ "name": "Chips and Salsa", "description": "With guacamole option", "price": 0, "modifiers": ["guacamole_addon"] },
{ "name": "Cheese Quesadilla", "description": "With Chicken / With Steak or Shrimp options", "price": 0, "modifiers": ["protein_addon"] },
{ "name": "Cheese Nachos", "description": "With Chicken / With Steak or Shrimp options", "price": 0, "modifiers": ["protein_addon"] },
{ "name": "Chili Cheese Nachos", "description": "", "price": 0, "modifiers": [] },
{ "name": "Mozzarella Sticks", "description": "", "price": 0, "modifiers": [] }
]
},
{
"name": "Sandwiches",
"items": [
{ "name": "Cajun Mahi Mahi", "description": "Lettuce, tomato, aioli, and guacamole", "price": 0, "modifiers": [] },
{ "name": "Philly Cheese Steak", "description": "Grilled peppers and onions", "price": 0, "modifiers": [] },
{ "name": "Cajun Chicken", "description": "Lettuce, tomato, and spicy aioli", "price": 0, "modifiers": [] },
{ "name": "Turkey", "description": "Lettuce, tomato, and mayo", "price": 0, "modifiers": [] },
{ "name": "Turkey Club", "description": "Bacon, lettuce, tomato, and mayo", "price": 0, "modifiers": [] },
{ "name": "Grilled Cheese", "description": "Sourdough and American cheese", "price": 0, "modifiers": [] },
{ "name": "Grilled Ham and Cheese", "description": "", "price": 0, "modifiers": [] },
{ "name": "Grilled Chicken", "description": "Lettuce, tomato, and mayo", "price": 0, "modifiers": [] },
{ "name": "BBQ Chicken", "description": "Lettuce, tomato, and BBQ sauce", "price": 0, "modifiers": [] },
{ "name": "Fried Chicken", "description": "Lettuce, tomato, and mayo", "price": 0, "modifiers": [] },
{ "name": "Chicken Caesar Wrap", "description": "", "price": 0, "modifiers": [] }
]
},
{
"name": "Soups & Salads",
"categoryNote": "Dressing selections: Italian, Ranch, Balsamic, Caesar, Blue Cheese, Thousand Island, French. Add to any salad: Chicken breast or burger patty, Grilled Shrimp, Grilled Mahi Mahi",
"items": [
{ "name": "New England Clam Chowder", "description": "", "price": 0, "modifiers": [] },
{ "name": "Chili Bowl", "description": "With Cheese and Onion", "price": 0, "modifiers": [] },
{ "name": "Beach Salad", "description": "Spring mix greens, tomatoes, cucumbers, feta cheese, and carrots served in a crisp flour tortilla shell", "price": 0, "modifiers": ["salad_dressing", "salad_protein"] },
{ "name": "Caesar Salad", "description": "Romaine lettuce, croutons, and Caesar dressing", "price": 0, "modifiers": ["salad_protein"] }
]
},
{
"name": "Tacos",
"items": [
{ "name": "Fish Tacos", "description": "Pico sauce, chips, lettuce, tomatoes", "price": 0, "modifiers": [] },
{ "name": "Chicken Tacos", "description": "Cheese, cabbage, and tomatoes on corn tortillas with a side of guacamole and salsa", "price": 0, "modifiers": [] },
{ "name": "Steak Fajita", "description": "Grilled with peppers, onions, and a side of cheese, tomatoes, and lettuce", "price": 0, "modifiers": [] },
{ "name": "Shrimp Fajita", "description": "Grilled with peppers, onions, and a side of cheese, tomatoes, and lettuce", "price": 0, "modifiers": [] }
]
},
{
"name": "Seafood",
"items": [
{ "name": "Fried Fantail Shrimp", "description": "", "price": 0, "modifiers": [] },
{ "name": "Clam Boat with Fries", "description": "", "price": 0, "modifiers": [] },
{ "name": "Fish and Chips", "description": "1/2 order available", "price": 0, "modifiers": ["size_full_half"] },
{ "name": "Grilled Shrimp & Baby Scallop Skewers", "description": "", "price": 0, "modifiers": [] }
]
},
{
"name": "Hot Dogs & Such",
"items": [
{ "name": "Hot Dog", "description": "Topped with onions, tomatoes, and relish", "price": 0, "modifiers": ["hotdog_extras"] },
{ "name": "Corn Dog", "description": "", "price": 0, "modifiers": [] },
{ "name": "Chili Dog", "description": "Topped with all beef chili", "price": 0, "modifiers": ["hotdog_extras"] }
]
},
{
"name": "Draft Beer",
"items": [
{ "name": "Budweiser (20oz)", "description": "", "price": 12, "modifiers": [] },
{ "name": "Bud Light (20oz)", "description": "", "price": 12, "modifiers": [] },
{ "name": "Big Dean's Blonde (20oz)", "description": "", "price": 12, "modifiers": [] }
]
},
{
"name": "Premium Draft Beer",
"items": [
{ "name": "Big Wave (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Cerveza De La Playa (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Dos XX (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Goose Island (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Guinness (16oz/20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Longboard (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Mango Cart (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Pacifico (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Santa Monica Wit (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Shock Top (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Stella Artois (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Michelob Ultra (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Space Dust (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "805 Lager (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "Heineken (20oz)", "description": "", "price": 14, "modifiers": [] },
{ "name": "10 Hop Hazy (20oz)", "description": "", "price": 14, "modifiers": [] }
]
},
{
"name": "Tall Cans",
"items": [
{ "name": "Coors", "description": "", "price": 0, "modifiers": [] },
{ "name": "Coors Light", "description": "", "price": 0, "modifiers": [] },
{ "name": "Tecate", "description": "", "price": 0, "modifiers": [] },
{ "name": "Michelob Ultra", "description": "", "price": 0, "modifiers": [] },
{ "name": "Busch Light", "description": "", "price": 0, "modifiers": [] }
]
},
{
"name": "Bottle Beer",
"items": [
{ "name": "Budweiser", "description": "", "price": 0, "modifiers": [] },
{ "name": "Bud Light", "description": "", "price": 0, "modifiers": [] },
{ "name": "Coors Light", "description": "", "price": 0, "modifiers": [] },
{ "name": "High Life", "description": "", "price": 0, "modifiers": [] },
{ "name": "Miller Lite", "description": "", "price": 0, "modifiers": [] },
{ "name": "Michelob Ultra", "description": "", "price": 0, "modifiers": [] },
{ "name": "Corona / Corona Premier", "description": "", "price": 0, "modifiers": [] },
{ "name": "Pacifico", "description": "", "price": 0, "modifiers": [] },
{ "name": "Firestone Union Jack", "description": "", "price": 0, "modifiers": [] },
{ "name": "Amstel", "description": "", "price": 0, "modifiers": [] },
{ "name": "Newcastle Brown", "description": "", "price": 0, "modifiers": [] },
{ "name": "Big Noise", "description": "", "price": 0, "modifiers": [] },
{ "name": "Best Coast Cider 16oz", "description": "", "price": 0, "modifiers": [] },
{ "name": "Stella Cidre", "description": "", "price": 0, "modifiers": [] },
{ "name": "Bud 00 (Non-Alcoholic)", "description": "", "price": 0, "modifiers": [] },
{ "name": "Becks N/A (Non-Alcoholic)", "description": "", "price": 0, "modifiers": [] },
{ "name": "Heineken 00 (Non-Alcoholic)", "description": "", "price": 0, "modifiers": [] },
{ "name": "Guinness 0 (Non-Alcoholic)", "description": "", "price": 0, "modifiers": [] },
{ "name": "Mango Cart N/A (Non-Alcoholic)", "description": "", "price": 0, "modifiers": [] },
{ "name": "Shandy Santa Monica", "description": "", "price": 0, "modifiers": [] }
]
},
{
"name": "Seltzers",
"items": [
{ "name": "High Noon", "description": "", "price": 0, "modifiers": [] },
{ "name": "White Claw", "description": "", "price": 0, "modifiers": [] },
{ "name": "Long Drink", "description": "", "price": 0, "modifiers": [] },
{ "name": "Topo Chico", "description": "", "price": 0, "modifiers": [] },
{ "name": "Suncruiser", "description": "", "price": 0, "modifiers": [] }
]
},
{
"name": "Cocktails",
"items": [
{ "name": "Margarita", "description": "", "price": 0, "modifiers": [] },
{ "name": "Mai Tai", "description": "", "price": 0, "modifiers": [] },
{ "name": "Tequila Sunrise", "description": "", "price": 0, "modifiers": [] },
{ "name": "Paloma", "description": "", "price": 0, "modifiers": [] },
{ "name": "Espresso Martini", "description": "", "price": 0, "modifiers": [] },
{ "name": "Bloody Mary", "description": "", "price": 0, "modifiers": [] },
{ "name": "Green Tea Shot", "description": "", "price": 0, "modifiers": [] }
]
},
{
"name": "Wine",
"items": [
{ "name": "Cabernet, Woodbridge", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Merlot, Woodbridge", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Sauvignon Blanc, Woodbridge", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Pinot Grigio, Woodbridge", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Hidden Sea Rose", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Chardonnay, Kendall Jackson", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Cabernet, Kendall Jackson", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Pinot Gris, Kendall Jackson", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Sauvignon Blanc, La Crema", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Murphy Goode Rose", "description": "Glass / Bottle", "price": 0, "modifiers": [] },
{ "name": "Sparkling Wine Splits", "description": "Single serving", "price": 0, "modifiers": [] },
{ "name": "Mimosa", "description": "Glass only", "price": 0, "modifiers": [] },
{ "name": "Freixenet", "description": "Bottle only", "price": 0, "modifiers": [] },
{ "name": "Mumm", "description": "Bottle only", "price": 0, "modifiers": [] }
]
},
{
"name": "Non-Alcoholic",
"items": [
{ "name": "Soda By the Can", "description": "", "price": 0, "modifiers": [] },
{ "name": "Bottled Water", "description": "", "price": 0, "modifiers": [] },
{ "name": "Sparkling Water", "description": "", "price": 0, "modifiers": [] },
{ "name": "Coffee or Hot Tea", "description": "", "price": 0, "modifiers": [] },
{ "name": "Juice", "description": "Orange, Cranberry, or Apple", "price": 0, "modifiers": [] }
]
}
],
"ownerUserID": 2,
"dryRun": false
}