Uber Eats System Design

Lesson 139 of 25610 min readPremium lesson preview
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.