- Food ordering and food delivery platform for the online customers.
- Facilitate door-to-door delivery
- Customers/consumers
- Restaurant
- Drivers
- Stripe
-
Customers can
- Search for restaurants based on the restaurant name and menu items
- Place an order
- Receive notifications about the status of an order once placed
- Track the status of the order on the app
- Pay for the order.
-
Restaurant can
- Create their profile (onboarding) and create/refresh/add new menu items,
- Update the status of order
-
Driver can
- Receive notifications about the available orders in the area, from which they can choose.
- Know when the order is available for pickup.
- Latency: Hungry users will not like to wait to see the menu/ restaurant details, so the search functionality should be very fast. The ordering experience should also not have high latency and must be seamless and fast.
- Availability: High availability is desirable for the best experience of a customer and the restaurants that are processing the order
- High Throughput: The system should be able to handle high peak load without problems or failures.
- Let's assume we are getting users from 25M area codes
- On average, each area code can have 100 restaurants.
- Each restaurant can have 15 dishes that can be served.
- Total records of dishes = 25M * 100 * 15 = 37.5B
- Number of customers: 100M
- If each customer on an average places 2 orders every day, number of orders in a day = 200M
- The peak time of orders will vary usually based on the day of the week. For example, weekends might have more orders than on weekdays. Peak times could be somewhere around noon or at dinner time in each region.
- In general, the searching of menus/restaurants will be read-heavy and the ordering functionality will be write-heavy.