Low Level Design of Food delivery app - Zomato, Swiggy, UberEats
Requirements
- Restaurant can register themselves.
- User can create, update, delete, get their profiles.
- User can search for the restaurant using restaurant name, city name.
- Restaurant can add, update foodmenu.
- User can see the foodmenu. User can get the food items based on Meal type or Cuisine type.
- User can add/remove items to/from the cart. User can get all the items of the cart.
- User can place or cancel the order. User can get all the orders ordered by him/her.
- User can apply the coupons. User can get the detailed bill containing tax details.
- User can made a payment using different modes of payment - credit card, wallet, etc.
- Delivery boy can get all the deliveries made by him using his Id.
- User can get the order status anytime. Success, Out for Delivery, Delivered, etc.
Services
- RestaurantService
- UserService
- FoodMenuService
- CartService
- OrderService
- PricingService
- PaymentService
- DeliveryService
I have published a story on medium about the working of all the services. I also have added the Data Model required. Please find the link here .
I have pushed complete working code on GitHub covering all the test cases. Feel free to raise the Pull request for adding new features, adding more test cases or improving the existing design.
#opensource #interviewpreparation