Christina Constantinou
25th August 2020 · 22 min read

Are you looking to create an app like Uber for your ride-hailing business? Well, you’re in the right place.

Uber launched in 2011 and since then their business has grown remarkably, and they’ve experienced amazing success.

But did you know that in early 2017, Uber were forced to completely rewrite their driver app - from scratch - in order to build a higher-quality product and overcome business-critical issues such as network lag. It took them a year and a half to complete this.

Of course, Uber is a multi-billion dollar company - it’s no big deal for them to drop a couple million on a redo.

But for a business that’s new to the market it can have a disastrous effect.

That’s why I wrote this blog - to help you build a stronger foundation for your on-demand taxi app, so you won’t have to worry about a product that won’t stand the test of time.

someone using uber app
Take inspiration from an industry leader.

This blog post isn’t my opinion, it’s a compilation of my decade-long experience with app development.

So read on for all the steps you’ll need to take to create the ride-hailing app of your dreams...

Outpace Competitors

You might know the tricks of the trade - but you need a technology team beside you every step of the way.

Chapter 1
Creating An App Like Uber - Overview

When you are developing a mobile app, it’s easy to want to do too much too quickly.

But this is usually a bad idea!

I always recommend beginning your app development process by creating an MVP - minimum viable product.

Essentially, an MVP is the basics of what an app needs to function.

When it comes to the MVP phase of creating an app like Uber, we should think about what features are essential to a ride-hailing app and the software we will need to build them.

The MVP features for an Uber-like app are:

Booking Interface

The main screen where customers can enter their desired destination, choose a cab type and pinpoint their location for pickup. Drivers can accept or reject incoming orders.

Tracking

Real-time location updates before and during the journey. This also includes navigation for drivers.

Payment

Cashless in-app payments, either using a debit/credit card or payment gateways such as PayPal.

Push Notifications

Keeps customers updated on the status of their driver, wait and journey times, and the make and model of the car picking them up.

Chapter 2
Ecosystem Of An MVP

During the development of an MVP, it is important to think about the actual architecture of the app and what we need to do to create it.

Here’s an example of an ecosystem for an MVP:

graphic of a MVP ecosystem
The architecture of your new app.

This image shows how the structure of an MVP can be broken down into three parts:

1. System Storage: This is where all the real-time location based data collected by the app will be stored.

2. Business Logic: This is everything related to the business side of your app, such as payments, messaging and invoices.

3. Real-time Logic: Here, everything related to the real-time aspect of your app is held e.g. push notifications and tracking.

This type of ecosystem is fantastic for creating an MVP for an app like Uber, and can minimise many problems that commonly occur due to the fact that you have three separate systems.

Because of this, it allows each system to operate independently of one another - meaning that one system breaking down will not cause the whole system to collapse, which saves you from disaster.

Now that we’ve figured out the optimal architecture for our MVP, let’s look in greater detail at the different technologies we can use to build each part:

1. Server

An app like Uber is constantly processing data - from thousands of rider requests to the most optimal routes for drivers. This means that building a server - or backend - that is strong and reliable is absolutely crucial to app development.

Think of the backend like the foundation of a house. You can paint the walls beautiful colours and decorate it with all the most expensive furniture, but if the foundation isn’t architecturally sound the whole building will fall apart.

And that’s the last thing you would want.

The first step when it comes to building your backend is choosing the appropriate database management system. There are a number of options here, such as MySQL, MongoDB and SQL Server. This is where your data will be stored.

After this, you should decide on a programming language for the actual creation of your backend - Python, Javascript and PHP are the most common. You will use this to build around the database and be the link between your backend and your frontend.

My experience with app development has taught me that focusing on my client's unique needs when creating the backend for their app always ensures the architecture is strong and reliable.

2. Geolocation

Uber is a ‘real-time’ geolocation app - this means it is constantly tracking its user’s location.

Think of the backend like the foundation of a house. You can paint the walls beautiful colours and decorate it with all the most expensive furniture, but if the foundation isn’t architecturally sound the whole building will fall apart.

There are four main ways a smartphone’s location can be determined:

GPS

The GPS chip in a smartphone determines its exact location by intercepting signals from GPS satellites.

Cell ID

Signals of the cellular base stations where a phone is connected.

Wi-Fi Access Points

These produce signals that can determine a smartphone’s location.

Implementing geolocation services into a mobile app can be achieved a number of different ways depending on what platform you plan to release your app on.

For Android, Google Maps and Google Location Services API can be used for both mapping and directions for drivers.

For iOS, Google Maps can also be used for mapping services. CoreLocation Framework can be used to obtain accurate location information, and MapKit for driver navigation.

If you would like to release on both platforms, OpenStreetMap API can be used for both iOS and Android in order to speed up development time.

3. Payments

When it comes to payment services, many first-time app developers try to develop their own payment gateway.

This is often a big mistake - trust me!

Developing a payment gateway is a long and often highly expensive process. With so many pre-existing payment gateways available to use, trying to develop your own would be a waste of time.

Some of the most common gateways are PayPal, Braintree and Stripe. When these are implemented, it allows the customer to be transferred to the gateway’s service which will accept the payments for you. You’ll then get access to encrypted payment information so that you can be sure that the customer has paid in full.

Another thing to note is the issue of data security. If you were to develop your own payment gateway, complying with the PCI-DSS (Payment Card Industry Data Security Standard) can be a long and complicated process.

But most pre-existing payment gateways are already PCI-DSS compliant - making the whole process a lot easier!

4. Notifications

Push notifications play a hugely important role when it comes to an app like Uber.

They allow swift communication between the rider and the driver, notifying each one when the other is close by.

Implementing notifications is fairly straightforward, and again depends on which platform you are releasing on.

You can use Google Firebase for Android and Apple Push for iOS - simple!

To summarise, here is the tech stack needed to build a MVP:

1. Select a database management system (e.g. MySQL)

2. Create the backend (using a programming language e.g. Javascript)

3. Implement geolocation services (e.g. OpenStreetMap API)

4. Integrate a payment gateway (e.g. Braintree)

5. Implement push notifications (e.g. Apple Push)

Now that we’ve figured out what we need to create an MVP, we can start building a fully-fledged Uber-like app.

Chapter 3
Ecosystem Of A Full Uber-like App
A simple view of a complicated picture.

In order to make a fully-fledged ride-sharing app, let’s have a look at a few more features we’ll need to think about:

1. UI UX Design

After the architecture, UI and UX Design are the most important elements of app development. This is what determines how visually appealing and easy to use your app is, which influences a user’s perception of your company and how likely they are to reuse your services.

UI (User Interface) refers to the graphical layout of an app. The buttons, the text, the images - every visual element of an app needs to be created by a UI designer. This will ultimately determine how attractive your app will be to your customers.

UX (User Experience) is concerned with a customer’s experience when interacting with an app. Does the layout make logical sense, or is it confusing? How quickly can a customer find what they need? Basically - how easy is it to use the app?

With an app like Uber, some things that need to be considered when designing the UI and UX are:

Map design and ability to easily search for destinations, as well as pinpointing rider and driver current locations

The ability to easily select a cab type and payment method

Star rating buttons

Easy access to settings and account information

UI and UX designers have all the experience needed to create the perfect Uber-like app for your business, working together to ensure the app is both easy to use and visually attractive.

2. Customer Relationship Management (CRM)

Having a good relationship with your customers - past, present and future - is a key aspect of running any business.

When it comes to creating an app like Uber, you’ll need to offer potential customers the ability to contact you if something goes wrong. Otherwise, unhappy customers are more likely to leave bad reviews on app stores…

...and that can cause serious damage to your business.

Luckily, there are plenty of customer relationship management services available that are easy to run. Two big options here are Salesforce and ZenDesk.

Not only do these services allow your app to offer convenient in-app customer service, they also automatically collect information from the customer’s device - allowing easier communication between customers and your help team, and useful data for you to record and analyse.

All CRM services have their benefits - what you choose is down to personal preference.

3. Rating System

Uber’s in-app driver and passenger rating system is a crucial part of their business.

It provides a more transparent service - rider’s can see what rating out of five their driver has before being picked up, which instills a greater feeling of confidence.

I would recommend creating an API that will allow the easy integration of star ratings in your app, improving the experience and satisfaction of your users.

So there you have it - the makings of an app like Uber!

However, something important to consider is that sometimes - unfortunately - things go wrong.

My years of app development experience have taught me all the technical knowledge needed to fix any problem that can transpire.

Let’s take a look at some of the more common problems that can occur during app development, and how we can solve these problems…

Outpace Competitors

You might know the tricks of the trade - but you need a technology team beside you every step of the way.

Chapter 4
Developing an Uber-like App - How to Tackle Your Biggest Challenges

There are a few main areas where problems can potentially occur:

1. Mobile App Performance

Did you know that 80% of users will only attempt to use a troublesome app three times or less?

That can seriously affect not only the success of your app, but the reputation of your business.

So dealing with issues of app performance quickly and effectively is incredibly important.

Many developers find that they run into issues with app launch times.

Before we begin to look at how to fix these, we should discuss the different types of app launches. These are:

Cold Launch

This is essentially the first launch of an app on any device which means the system on which the app is being used has not yet created the app’s process. This type of launch presents the greatest challenge regarding app start up times.

Hot Launch

Here, an app is not launched from scratch but has been suspended - minimised or backgrounded - and so the ‘launch’ is merely the device bringing the app to the foreground.

Warm Launch

This is often considered to be ‘in-between’ a cold and a hot launch. In this instance, an app is often re-launched after being closed by the user or the device.

I have found that something that can cause major issues with app launch times is the use of too many dynamic frameworks.

The more features you add to your app, the more frameworks you will need - this is another reason why I recommend creating an MVP.

To combat this, I also recommend thoroughly checking your dependencies and merging as many of them as you possibly can without causing harm to your app infrastructure.

You can convert dynamic frameworks to static frameworks, too, which will not only improve app launch times but will also reduce the total size of your app - meaning better app performance overall!

Now that we’ve reduced app launch times, let’s look at another common issue: slow load times while using the app. Here are a few solutions to this issue:

Resize and compress images

Large image sizes can have a detrimental effect on load times. This makes for a frustrating user experience.

I recommend compressing images, which reduces the total bytes in an image without having a negative impact on the resolution.

Resizing your images will also allow you to fit images to your specific mobile app, which means you will be able to free up extra bandwidth space that would have been used to load large images.

Using a CDN to accelerate APIs

A CDN (content delivery network) uses servers to speed up API communication.

If you use an edge server that is near to the user, payload, size, and round-trip time is improved due to the reduction in distance. This will greatly improve app load times.

Remove non-essential features

It’s easy to get carried away with fancy features when creating an app, but sometimes these unnecessary components can have a negative impact on app performance - especially when it comes to load times.

That’s why it’s important to make sure that you work with your UI and UX designers to create an app that is as streamlined as possible. You’ll find that can greatly speed up app load times!

2. GPS Accuracy

Uber themselves have often found challenges when it comes to geolocation services.

GPS accuracy can sometimes be troublesome in urban locations - often places that are key demographics for ride-hailing apps.

This is often due to the fact that tall buildings in big cities can block the line of sight to GPS satellites, causing inaccuracies in position estimates that can be as significant as 50 metres or more.

Location inaccuracies can cause huge problems for drivers. Being unable to find their passenger or missing something as seemingly small as one turn can have a massive impact - it could cause a significant increase in journey or pickup times, which can lead to unhappy customers.

That is not something any business wants.

So you can see why making sure GPS services are accurate is hugely important for an app like Uber.

A great way to combat this issue is to optimize performance using a particle filter.

Particle filters allow us to estimate the location of a user’s phone by the use of hundreds of hypothesized locations - or ‘particles’. Over time, particle filters become more and more accurate as a larger amount of information is made available.

I’ve found that particle filters, alongside the use of 3D mapping, can greatly reduce errors in GPS accuracy - leading to a much more useful and high-quality Uber-like app.

3. Database Limitations

When developing an app, people sometimes forget to factor in the future growth of their business and the amount of data their database will need to hold.

Because of this, many developers find that their database has not been designed for easy scalability. This can cause major issues with app performance and data management.

For me, it is extremely important to always keep on top of database management systems so that you know that they can always support the growth of your business.

That’s why it’s important to choose a system that offers full scalability - so you can rest assured that your app will always grow alongside you.

Conclusion

Hopefully now you’ll have a greater understanding of how exactly an app like Uber is made, and all the features that you’ll need to create an app for your business.

The future is mobile first - are you going to be a part of it?

Let us help you!

At Lolly, we pride ourselves on our first-class technical abilities. Our app development team can work alongside you to create an Uber-like app tailored to your specific business needs.

Contact us today and get started with creating your perfect mobile app for your ride-hailing business.