Better Engineers

Better Engineers

Share this post

Better Engineers
Better Engineers
System Design - Food Delivery App Zomato, Uber Eats

System Design - Food Delivery App Zomato, Uber Eats

How Food Delivery Apps deliver the food...lets learn Byte by Byte..avrf

Better Engineering's avatar
Better Engineering
Sep 05, 2024
∙ Paid
109

Share this post

Better Engineers
Better Engineers
System Design - Food Delivery App Zomato, Uber Eats
19
Share

System Design Refresher :

1. Software Architecture Pattern - Layered Architecture

2. How Enterprise Applications Exchange Data Using Messaging

3. Microservices Design Pattern - Event Sourcing Pattern

4. Improve API Performance 🚀

5. Distributed System Learning Roadmap

Get 20% off forever

Introduction and problem statement.

In this Article, We will focusing on the design of a delivery system similar to Zomato, Swiggy, or Uber Eats.

Functional Requirement

  • Search A Food or Restaurent

  • Order a Food

  • Delivery of Food

Non- Functional Requirement

Non-functional requirements define a system's attributes. In our example, this would be:

  • Scalability,

  • Data consistency,

  • Security,

  • Availability,

  • Operational latency.

Since Order a food is itself a big system , lets not cover in this Series .

Defining Data Models

We need database schemas to save users Information, restaurants data and orders information .So we need few tables to support our system :

  • User/Customer : To store user information

    eg. userId,name,addressId

  • Restaurant : Store the Restauran Information .

    e.g . restaurantId,name,addressId.

  • MenuItem : Will save all Food Item with price.eg. menuId,restaurantId,price,name.

  • MenuItemOrder : MenuItemOrder table where will have menuId as Foreign Key and quantity ordered and orderId. e.g id,orderId,menuId,quantity.

  • Address : we need to store address for user and restaurants , in that case we need an address table, and addressId will be the Foreign Key. e.g addressId,address 1 etc.

  • Order : Finally save all this information in a Order Table where restaurentId, customerId, addressId, price etc will be saved. e.g orderId,restaurantId,customerId,addressId.

    Our final Database scheme lookslike below we can add Driver table too but for now we dont needed.

Designing specific services

Keep reading with a 7-day free trial

Subscribe to Better Engineers to keep reading this post and get 7 days of free access to the full post archives.

Already a paid subscriber? Sign in
© 2025 Dev Dhar
Privacy ∙ Terms ∙ Collection notice
Start writingGet the app
Substack is the home for great culture

Share