Skip to content

Add a Recipe to a Menu

As a Host, I want to add recipes from my collection to an event’s menu, so that I can finalize the drink offerings for my party.

  • Given I have an existing event with a menu
  • When I want to add recipes to the menu
  • Then I can:
    • View the event’s menu from the event detail screen
    • Browse my collection of saved recipes (cocktails)
    • Search recipes by name, category, or ingredients
    • See recipe details including name, description, and category before adding
  • And when I select a recipe to add
  • Then:
    • The recipe is added to the menu’s cocktails list
    • The menu immediately updates to show the new recipe
    • The recipe cannot be added twice (duplicate prevention)
    • I can see the updated list of cocktails on the menu
  • And the system automatically:
    • Aggregates ingredient requirements from all recipes on the menu
    • Updates the event’s ingredient needs calculation
    • Maintains the menu’s flavor profile analysis based on added recipes

FULLY IMPLEMENTED (December 2025)

UI Components:

  • Create Menu screen allows adding cocktails (recipes) during menu creation
  • Menu display screen with edit mode for existing menus
  • Edit mode toggle button (hidden when menu is finalized)
  • Add Recipe form with search and category filtering
  • Recipe search by name in real-time
  • Category filter (Signature, Classic, Punch, Mocktail, Other, All)
  • Recipe picker showing filtered available recipes
  • Remove recipe functionality with confirmation dialog
  • Real-time menu updates after adding/removing recipes
  • Duplicate prevention (recipes already in menu are excluded)

Data Layer:

  • addCocktailToMenu() function in menu data module
  • removeCocktailFromMenu() function in menu data module
  • recipeToMenuCocktail() helper to convert Recipe to MenuCocktail
  • getAvailableCocktails() uses real recipe data (allRecipes)
  • searchRecipes() function for name-based searching
  • updateEventMenu() function to sync menu changes with event
  • Menu structure supports cocktails array
  • Recipes are referenced by ID in menus

Files:

  • shaker/app/(tabs)/events/create-menu.tsx - Menu creation with recipe addition
  • shaker/app/(tabs)/events/menu.tsx - Menu display and editing screen
  • shaker/data/menus/menuData.ts - Menu data operations
  • shaker/data/menus/index.ts - Menu types and recipe mapping utilities
  • shaker/data/events/index.ts - Event menu update function

Features:

  • ✅ Edit existing menus to add/remove recipes
  • ✅ Recipe search and filtering in edit mode
  • ✅ Category-based filtering
  • ✅ Recipe browsing from all available recipes
  • ✅ Duplicate prevention
  • ✅ Real-time UI updates
  • ✅ Uses real recipe data instead of mock data

Remaining Limitations:

  • Ingredient aggregation happens during shopping list generation, not real-time during menu editing
  • Recipe detail preview not available when selecting recipes (navigate to recipe detail separately)

Future Enhancements:

  • Add real-time ingredient requirement calculation as recipes are added
  • Show recipe details/preview in recipe selection
  • Support bulk adding multiple recipes at once
  • Enhanced recipe browsing with tags and difficulty filters

High - Core functionality for event planning and menu management

  • Event (parent entity)
  • Menu (aggregate root with cocktails, beers, wines)
  • Recipe (referenced by cocktails on menu)
  • MenuCocktail (menu item referencing a recipe)
  • Ingredient (aggregated from menu recipes)
  • AddRecipeToMenu (C17) - Add a recipe to an existing menu
  • CreateMenu (C3) - Create a new menu for an event (includes adding recipes during creation)