Public Menu Overview
The public menu is the customer-facing digital menu at /m/[slug]. It renders only live menus and provides a full ordering experience with payments, order tracking, and more.
Architecture
The public menu is a server component that fetches all required data in a single request for optimal performance:
- Menu details (by slug)
- Business and branch information
- Categories and collections
- Menu items (with option groups)
- Promotions
- Template and branding data
- Seasonal template rules
Core Components
| Component | Description |
| PublicMenuShell | The outer layout , header, navigation, search bar, branch info, collection/category selectors, action buttons, language selector |
| PublicMenuOrderingExperience | The full ordering experience , item grid, category pills, search, cart management, checkout, payments |
| PublicMenuScheduledOrderingExperience | Scheduled/pre-order wrapper , calendar-based time slot selection, then delegates to the standard ordering experience |
Key Features
| Feature | Description |
| Item Grid | Browse all items with images, prices, and descriptions |
| Category Pills | Filter items by category |
| Collections | Switch between menu collections (e.g. Breakfast, Lunch, Dinner) |
| Search | Search items by name or keyword |
| Cart | Add items with option selections, view running total |
| Checkout | Select order type, enter details, choose payment method |
| Payments | Mobile Money, Card (Paystack), Bank Transfer, Split-the-bill |
| Order Tracking | Track order status in real-time |
| Dietary Preferences | Filter items by dietary needs and allergens |
| Guest Orders | View past orders without signing in |
| Language Selector | Switch between translated menu languages |
Order Types
| Type | Description |
| Dine-in | Eat at the restaurant , select seat/table/zone |
| Pickup | Order ahead and collect in-store |
| Delivery | Order for delivery to your location |
| Scheduled | Pre-order for a future date/time |
Analytics Tracking
The public menu automatically tracks the following events for analytics:
| Event Type | Trigger |
view | Menu page loaded |
scan | QR code scanned to access menu |
session_start | Customer session started |
item_impression | Item appeared in viewport |
item_opened | Item details expanded |
item_added | Item added to cart |
item_removed | Item removed from cart |
cart_abandoned | Cart abandoned (session end with items) |
search_performed | Search executed |
category_viewed | Category pill tapped |
order_started | Checkout initiated |
order_submitted | Order placed successfully |
share | Menu shared |
Browser Support
The public menu supports:
- Guest users (no account required)
- Signed-in customers (loyalty points, saved preferences)
- Offline resilience (guest order data cached locally)