Uber Eats System Design
In this lesson3 sections
Uber Eats System Design
Interview exercise: coordinate a food order and a courier
Design a hypothetical food-delivery service with restaurant menus, checkout, restaurant acceptance, courier dispatch, live delivery updates, and payment. Use the ride-hailing design as a starting point, then identify what changes when a third participant prepares an order before pickup.
Allow about 60 minutes. Spend the first part agreeing on scope, then draw the main data flows and work through one failure in detail.
Define the order contract
Decide when the customer has a confirmed order. A restaurant may reject a request, an item may become unavailable, and preparation may take longer than predicted. Distinguish a submitted order from one accepted by the restaurant, ready for pickup, collected by a courier, and delivered. Cancellation and refund eligibility depend on the current state and the agreed product policy.
Keep a stable order ID across these transitions. Model restaurant preparation and courier assignment as related state, rather than assuming they always advance together. An order can be accepted while no courier has agreed to collect it.
Trace checkout and dispatch
The rest of this lesson is for Premium members
Premium opens every lesson in this course, along with all questions and solutions on PracHub.