Let’s start with the requirements for designing a system like Uber.

Functional requirements

Following are the functional requirements that we will focus on while designing Uber:

  • Update driver location: The driver is a moving entity, so the driver’s location should be automatically updated after regular intervals.

  • Find nearby drivers: The system should find and show the nearby available drivers to the rider.

  • Request a ride: Riders should be able to request a ride, upon which the nearest driver will be notified about riders’ requests.

  • Manage payments: At the start of the trip, the system will initiate the payment process and manages the payments.

  • Show driver estimated time of arrival (ETA): The rider will be able to see the estimated time of arrival of the driver.

  • Confirm pickup: Drivers should be able to confirm that they have picked up the rider.

  • Show trip updates: Once a driver and a rider accept a ride, they should be able to constantly see trip updates like ETA and current location until the trip finishes.

  • End the trip: The driver marks the journey complete to become available for the next ride upon reaching the destination.

Create a free account to access the full course.

By signing up, you agree to Educative's Terms of Service and Privacy Policy