A ride-sharing service is a digital platform that enables users to request on-demand transportation by connecting them with nearby drivers through a mobile or web application.
Uber, one of the most popular ride-sharing platforms, allows passengers to:
In this chapter, we will explore the low-level design of a simplified ride-sharing platform.
Let's start by clarifying the requirements:
Before starting the design, it's important to ask thoughtful questions to uncover hidden assumptions, clarify ambiguities, and define the system's scope more precisely.
Here is an example of how a conversation between the candidate and the interviewer might unfold:
Candidate: Should we allow riders to choose the type of ride (e.g., Sedan, SUV, Auto)?
Interviewer: Yes, riders should be able to select from available ride types.
Candidate: Should drivers be assigned automatically, or should they have the option to accept or reject a ride?
Interviewer: The system should notify nearby drivers. Drivers can accept or reject a ride.
Candidate: Are we considering payments and ratings as part of this design?
Interviewer: Assume payments are handled externally and are always successful. Lets skip ratings for this version.
After gathering the details, we can summarize the key system requirements.