System Design - Food Delivery App Zomato, Uber Eats
How Food Delivery Apps deliver the food...lets learn Byte by Byte..avrf
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
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.