Design a Zomato-Like Food Delivery Website
Requirements: Design the high-level architecture for a food-delivery website/platform similar to Zomato - covering restaurant listings, menus, orders, and delivery tracking.
Design considerations: Core entities (Restaurants, MenuItems, Users, Orders, DeliveryPartners), search/discovery (location-based restaurant search), order lifecycle (placed -> accepted -> preparing -> out for delivery -> delivered), and real-time delivery tracking.
Approach: Discuss a services-oriented breakdown - a Restaurant/Catalog service, an Order service, a Delivery/Logistics service (assigning delivery partners, tracking live location), and a Search service (geo-indexed restaurant search, e.g., using geohashing or a spatial index). Cover data storage choices (relational DB for orders/transactions, a fast key-value/cache layer for real-time location updates), and how the pieces communicate (REST/gRPC APIs, event-driven updates for order status changes).