SevyDevy

Design a food delivery app (low-level design)

PremiumLow-level designMedium

  • State machine
  • Order lifecycle
  • Strategy pattern

Quick answer

This low-level design interview question asks you to design a food delivery app (low-level design). Aim for a design that is modelled as clear classes, interfaces and relationships that can handle new requirements without a rewrite. Interviewers want to see how you name responsibilities, keep classes small and reason about change.

The problem

Food delivery app low level design, in the style of Swiggy or Zomato: build the object model for restaurants, menus, a cart, pricing, orders and delivery partners. The hard parts are an order status state machine with no illegal jumps, prices frozen at checkout, and assigning a nearby partner.

A customer browses restaurants, builds a cart from one restaurant's menu with item customisations, applies a coupon, pays and places the order. The restaurant accepts and prepares it, a delivery partner is assigned, picks it up and delivers it. The customer sees each status change, can cancel within rules, and rates the order.

What must a food delivery app (low-level design) do?

  • Order: Placing an order freezes the cart into line items with prices. Status moves through PLACED, ACCEPTED, PREPARING, READY, PICKED_UP, DELIVERED, or CANCELLED and REJECTED.
  • Assignment: When the restaurant accepts, assign a nearby available delivery partner; if none accepts within 2 minutes, widen the radius.
6 more requirementsUnlock to see all

How well must it do it?

  • Correct transitions: No illegal status jump (for example DELIVERED after CANCELLED); every transition is recorded with time and actor.
  • Consistent pricing: The price shown in the cart is the price charged; a later menu change does not alter a placed order.
2 more requirementsUnlock to see all

What scale should you design for?

Use these numbers in your estimates.

The scale numbers unlock with this questionUnlock

Key concepts

  • State machine
  • Order lifecycle
  • Strategy pattern
  • Observer pattern
  • Dispatch assignment
  • Cart and checkout

How you’ll practise

6 short steps · save and come back any time
  1. Requirements
  2. Core objects
  3. Class relationships
  4. Key flows
  5. Extensibility
  6. Wrap-up

Lala, personalized to you, gives a hint when you ask and reviews your design when you are ready.

What do interviewers look for?

In any low-level design round.

  • Lists the use cases before writing classes
  • Gives each class one clear responsibility
  • Uses interfaces where behaviour is likely to change
  • Applies a design pattern only when it solves a real problem
  • Handles edge cases and invalid states explicitly
  • Walks through one use case end to end with the model

Questions people ask about this interview question

Which design type is this question?
It is a low-level design question. You design a food delivery app (low-level design) and explain your choices the way you would in an interview.
Is this question asked at entry level?
It is marked Medium. Entry-level engineers can practise it, but it expects you to reason about requirements and trade-offs, not only list components.
What should I cover first?
Start with the use cases and the core entities, then the responsibilities of each one. Agree on scope with the interviewer before you design anything.
Can I practise it for free?
It is a premium question. Sign up and unlock it once for 10 credits; it then stays unlocked. When you finish, Lala, your personalized AI mentor, can review your design for 30 credits.

Related questions

Updated · Written by the SevyDevy team

Premium questionSign up free, then unlock it