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.
Acceptance Criteria
Section titled “Acceptance Criteria”- 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
Implementation Status
Section titled “Implementation Status”✅ FULLY IMPLEMENTED (December 2025)
Implementation Details
Section titled “Implementation Details”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 moduleremoveCocktailFromMenu()function in menu data modulerecipeToMenuCocktail()helper to convert Recipe to MenuCocktailgetAvailableCocktails()uses real recipe data (allRecipes)searchRecipes()function for name-based searchingupdateEventMenu()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 additionshaker/app/(tabs)/events/menu.tsx- Menu display and editing screenshaker/data/menus/menuData.ts- Menu data operationsshaker/data/menus/index.ts- Menu types and recipe mapping utilitiesshaker/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
Priority
Section titled “Priority”High - Core functionality for event planning and menu management
Related Entities
Section titled “Related Entities”- 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)
Related Commands
Section titled “Related Commands”AddRecipeToMenu(C17) - Add a recipe to an existing menuCreateMenu(C3) - Create a new menu for an event (includes adding recipes during creation)