How to build an app like Uber?
Since the pandemic, the need for ride-sharing services has significantly increased. According to the analytics by Statista, the market is expected to grow by more than 115% between 2020 and 2026. It means that, even though there are such big players as Uber, Lyft, and Bolt, it is still possible to enter the market. The only thing that should be considered is that a new app must have a competitive advantage that would promote it among users.
To attract the audience, businesses have to implement more and more features accompanying the original concept. Thus, starting as a taxi-hailing business in 2008, today’s Uber represents an ecosystem of many services. Apart from ride service, these services are:
|Uber Eats||A food delivery service and an app.|
|Uber Connect||A service within the Uber app, that allows users to request same-day delivery of items.|
|Bike and Scooter||Another service within the Uber application, providing users with an opportunity to rent bikes and scooters.|
|Uber Transit||A service that enhances the functioning of public transport.|
|Uber Health||A platform designed in a way of the main app for organizing trips of caregivers and patients.|
|Uber Freight||A shipper-carrier platform for managing shipments.|
|Uber for business||A service that helps to organize business trip rides and meal delivery in a single dashboard.|
|Uber Money||Financial services by Uber that help to manage payments for rides.|
However, should the company implement all these features right from the start, it would definitely fail. Many great companies started from the MVPs and developed just the core features at first. In the case of Uber, it was as stated in their mission “Tap a button, get a ride”. Hence, we’ll only have a look at what is needed to develop a good Uber-like application for a ride, as it is enough, to begin with.
Check the mobile app development services page to know how exactly we’ll be working on your ridesharing application.
How does it work?
Uber has a two-faceted operating model for drivers and riders, but note that to build a system like this, one needs three apps: a driver app, a rider app, and an admin panel. Each has its own user flow and functions. The first two apps are made for mobile, the last can operate on a desktop or be cross-platform. Let’s list the functions for each role.
Any interaction with an app starts with downloading it from the app store or reaching the app in the browser. Therefore, the Uber app exists in several versions: web and mobile. Mobile version is built for Android with the use of Java and for iOS with Objective-C and Swift. As for the web version, it is built on top of Node.js.
The user features of the mobile app go as this:
- Geolocation access
- Phone number authentication
- Payment options: cash or credit card
- Choosing offers
- Subscription for business
- Delivery service
- Ride rating
- Emergency button
- Tips for the driver
- Address book
Technically the driver app is paired with the user app, so the same technologies are applied. However, the functionality is quite different. The following are the core ones.
The user features go as this:
- Sign up form: phone, email, name, and agreement
- Documents upload
- Geolocation access
- Accepting trips
- Driver profile
- Bank account info for payouts
- Earnings view
- Rider rating
- Recommendations based on stats
- Services choice: ride or delivery
- Inbox for messages and notifications
- Emergency button
An app cannot function without analytics and management, hence, an admin panel is a vital part of the overall system. It provides a centralized location for monitoring and controlling the operations of the platform. An admin panel’s functionality derives from the roles described above, as they are to be managed.
The user features go as this:
- User accounts management
- Driver accounts management
- Monitoring of trip assigning and progress
- Payment aspects management
- Analytics and reporting tools.
These were functions of the apps powering the Uber system, the next paragraph depicts the tech stack behind them. An important remark is that, even though Uber unveiled their full tech stack in the 2010s, some positions might have and have changed. For example, earlier Uber preferred Cassandra for their data storage, but recently they have migrated to Google Cloud Spanner. So, note that the following is a presumable review of technologies.
Even though Uber doesn’t share their ML models, which is totally understandable, they are open to talking about the technologies that lie behind their analytics. There are two that are worth mentioning: Michelangelo and Horovod. The first one is an internal technology, however pretty openly talked about, the latter is open source, so anyone can use it.
Michelangelo is an Uber machine learning platform designed to manage the ML workflow. It covers the whole process from managing data pipelines to monitoring predictions. As for the Horovod, it is a Michelangelo’s component for working with distributed deep learning projects with TensorFlow, PyTorch, Keras, and MXNet frameworks. It was introduced as a solution that could reduce time of model training from days to hours: Horovod training script is written in a few lines of Python code, which makes it easier to utilize.
Over the years, Uber has also developed their own fraud detection system RADAR, which is based on AI as well. The most common fraud situations are the inability to get the payment for the ride or customers’ disputes over payments and requests for refunds. These issues can be automated, but what if the fraud doesn’t fall under the classification? In such cases, the system operates in conjunction with a fraud analyst, who deals with the most complex cases.
These were some unique features of the ML and AI at Uber, let’s now move on to the basics. The following is an approximate tech stack of an app like Uber:
|Stream processing platform||Apache Kafka|
|Trip execution engine||Python, Node.js, Go, Java|
|Data storage||Google Cloud Spanner|
|Cashing and queuing||Redis|
|Mapping||Google maps, Java-based stack|
|Payment system||Braintree, Card.io|
|Networking||OKhttp, Retrofit, Gson|
|Dependency injection framework||Dagger|
|Libraries||Butter Knife, Picasso|
|Components placement and sizing||Masonry, SnapKit|
|Build system||Core Tasks|
|Location||Google Location’s APIs|
|UI rendering||React.js, Flux, Redux|
Time and money
The approximate time to develop a ride-sharing app like Uber depends on several factors. First is the number of features you’d like to implement in the MVP. Second, how many people are going to work on building the application?
Building such an app requires specialists in different roles. The programming work can be done by a single developer in case an engineer has profound skills in both mobile and backend coding. However, usually, these are different roles. Most likely, you’ll need one backend engineer and one or two mobile developers. Don’t forget about the web version.
Apart from programming roles, there are other specialists necessary for product development: a UI/UX designer for creating interfaces, a marketer for making a product attractive for the audience, an attorney for legal issues, and a QA for testing the app.
Nevertheless, taking into account all possible outcomes of all the ways to build an app, it may take from 2 to 5 months. Our company estimates the development time required to create a driver application, a rider application, and an admin panel at 3 months.
Cost for the app, once again, will depend on its complexity, the region where the app is being developed, and the way of development: whether you choose a solution by a freelance developer or find an outsourcing company. You can read more about different types of hiring in our article A Complete Guide on How to Hire React Native App Developers. Anyway, how is the price calculated?
To name a few factors influencing the cost, apart from hours spent on the development, these are customized design, project management, quality assurance, integrations, and technologies used — whether it’s a cross-platform built with React Native or a native app.
Roughly speaking, as an outsourcing company, we would estimate developing a two-faceted app with basic features and an admin panel as $50,000.
How to gain a competitive advantage?
As we’ve mentioned before, to beat the competitors, another ride-sharing application should have unique features. Just to give you a few ideas on how to make an app more attractive.
Pricing. Knowing that Uber takes 25% of the ride cost, the percentage can be reduced. It will result in making rides more affordable for the customers, and, as a result, will bring more users.
Another way is dynamic pricing, a long-established model of monitoring competitors’ prices to make better costs.
Improved user experience. All taxi-hailing apps are built similarly with slight changes. If even a simpler designed app will emerge, it might be a groundbreaking solution for the ride-sharing market. Things to be simplified in a user journey: easy registration, simplified methods of payment, a live chat system that shouldn’t be hidden in several steps but accessed within one tap, and much more.
More options. An app that offers you the most convenient routes, shows you the nearest scooters, or calculates different times to get to your destination in different vehicles will not reduce your income, but rather increase it by improving the user experience with the application.
Driver support. The better treatment drivers get, the more of them switch to your side, and the greater choice of rides the customers get. Motivation may include rewards after a certain number of rides, referral programs, discounts on gas and car maintenance, push notifications telling about traffic jams or changes in local regulations.
Voice recognition. You can add this feature to make a pleasant user experience, as, for example, people are not always comfortable with typing when being outside in cold weather. Another thing is that voice recognition is the best option for making an app accessible for people with special needs, which will add extra value to the brand image.
Personalization. Recommendations can be given based on the user’s favorite routes. For example, these can be automatically saved, so that a user could request a trip without typing an address for every new ride. Sharing ride progress with family and friends can be another option, allowing the nearest and dearest to track if a rider arrived home safely. The map view can be personalized as well by showing only public transport, current traffic situation, or the nearest drivers at the user’s request.
However, if you’re dreaming big and want to make an Uber-like super-app that offers not only taxi-hailing, but also many other services, we have a solution. At Ronas IT, to keep up with the latest changes in different industries, we hold workshops, in which our team reimagines well-known apps. That’s what we did to Uber as soon as they had added food and grocery delivery to their application.
What would we add to the application design? The first thing is onboarding. Quite often ride-sharing apps miss this important step, even though it increases the level of trust by introducing a user to all app opportunities. We would present it in Instagram-like stories a user swipe or skip.
Also, we believe that intuitive icons are great, but sometimes it’s worth adding realistic visuals to the design. You don’t have a chance to mistake a bicycle for a scooter or parcel delivery for food delivery if you see the photo-like buttons in the menu.
The last thing we thought would enhance the super-app was a subscription. As its functionality is growing, it is important to put all services into a single ecosystem. Sticking to the two-word naming traditions of the service, we called it Uber Pass.
Our team created this concept in just 8 hours. You can find the whole case study on our Behance page.
To sum up
Building an app like Uber can be a challenging but rewarding process. To differentiate it from the original Uber application, you may consider providing unique features such as personalized recommendations, voice recognition technology, or loyalty programs.
Ultimately, developing a new ride-sharing application requires detailed planning, implementation, and continuous improvements to ensure its success. In this case, knowing the user flow of the app, including the steps involved in requesting a ride and paying, is crucial for providing a seamless experience. Should you find this path too challenging, the Ronas IT team is ready to ride you to the final destination and build your MVP.
Would you like us to estimate the time and cost of your application development?