Skip to content

Use Venue Locations for Inventory

As a Host, I want to use the current venue’s bars and storage areas to define location options for products, tools, and glassware, So that I can assign items to specific physical locations within the venue.

  • Given I have set a current venue (see set_current_venue.md)
  • When I add a product, tool, or glassware to inventory
  • Then I can select a storage location from the current venue’s bars and storage areas
  • And location options are dynamically generated from:
    • Bar areas in the current venue (e.g., “Main Bar”, “Kitchen Counter Bar”)
    • Storage areas in the current venue (e.g., “Pantry”, “Kitchen Fridge”, “Bottle Cooler”)
  • And I can select either:
    • A bar area (for items used at service stations)
    • A storage area (for items stored when not in use)
  • And if no current venue is set, the system uses the default venue (“The Lime Factory”)
  • And if a venue has no bars or storage areas defined, generic location options are available as fallback
  • And I can filter inventory by location to see all items at a specific bar or storage area
  • And I can view all items across all locations in the current venue

FULLY IMPLEMENTED (January 2026)

Medium - Important for inventory organization and location tracking

  • Venue, Bar, StorageArea, Product, Tool, Glassware, Equipment, Inventory
  • SetCurrentVenue (from set_current_venue.md)
  • GetVenueLocations (to be defined)

Implementation:

  1. Location Options Generation:

    • Created shaker/utils/venueLocations.ts utility module
    • getCurrentVenueLocationOptions() - Gets locations from current venue (async)
    • getCurrentVenueLocationOptionsSync() - Synchronous version for default venue
    • getVenueLocationOptionsById(venueId) - Get locations for specific venue
    • Dynamically generates options from venue’s bars and storage areas
    • Includes bar areas as “Bar: {name}” options
    • Includes storage areas as “Storage: {name}” options
  2. Fallback Handling:

    • Default venue (“The Lime Factory”) used if no current venue set
    • Generic location options provided as fallback if venue has no bars/storage
    • Fallback options: Bar Shelf, Pantry, Refrigerator, Freezer, Wine Cellar, Storage Room, Bar Area, Kitchen, Basement, Other
  3. Files Modified:

    • shaker/app/(tabs)/inventory/add-product.tsx - Uses getCurrentVenueLocationOptions()
    • shaker/app/(tabs)/inventory/tools/add-tool.tsx - Uses getCurrentVenueLocationOptions()
    • shaker/app/(tabs)/inventory/glassware/add-glassware.tsx - Uses getCurrentVenueLocationOptions()
    • shaker/app/(tabs)/inventory/equipment/add-equipment.tsx - Uses getCurrentVenueLocationOptions()
    • shaker/app/(tabs)/inventory/edit-item.tsx - Uses getCurrentVenueLocationOptions()
  4. Utility Functions:

    • getVenueLocationOptions(venue) - Internal function to format venue locations
    • getCurrentVenueLocationOptions() - Get locations from current venue (async)
    • getCurrentVenueLocationOptionsSync() - Synchronous version
    • getVenueLocationOptionsById(venueId) - Get locations for specific venue
    • genericLocationOptions - Exported fallback options
  5. Filtering & Views:

    • Location filter added to inventory-items.tsx screen
    • Location picker filter with all venue locations
    • “Group by Location” toggle to switch between category and location grouping
    • Location summary display showing item counts per location (e.g., “15 items at Main Bar, 8 items at Pantry”)
    • Location filter integrated with existing category and stock filters

Benefits:

  • Location options match actual venue structure
  • Better organization when working at different venues
  • Easy to see what’s where at each venue
  • Supports multi-venue inventory management
  • Set Current Venue (set_current_venue.md) - Must be implemented first
  • Add Venue (add_venue.md) - Venues must have bars/storage defined
  • Add Bar (add_bar.md) - Bar areas added to venues
  • Add Product/Tool/Glassware stories - Location selection updated
  • Multi-venue inventory tracking (items at different venues)
  • Location-based inventory reports
  • Automatic suggestions based on item type (e.g., cold items → cold storage areas)
  • Location capacity tracking
  • Move items between locations