Requirements

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

Functional requirements

The functional requirements of our system are as follows:

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

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

  • Request a ride: A rider should be able to request a ride, after which the nearest driver should be notified about the rider’s requests.

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

  • Show driver estimated time of arrival (ETA): The rider should 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 upon reaching the destination, and they then become available for the next ride.