It’s safe to assume that you have several on-demand transportation apps on your phone right now, which indicates the popularity of (or demand for!) these applications. More and more businesses are offering on-demand services in an attempt to disrupt the already-established big industry players. We’ve seen such successful efforts in the past with the impact of Airbnb on hotels, or Uber on the traditional cabs market.
Right now, Research and Markets predicts that the on-demand market segment will grow by a staggering $4.75bn during 2022-2026, progressing at a Compound Annual Growth Rate of 60.77%. This means, that if you’re considering launching a new ride-sharing app, you’ve picked a good time. However, in this competitive market, it’s crucial to approach on-demand app development the right way if you want to offer a solution tailored to the needs of the already-saturated market.
In this article, I go through everything you should know to build a successful and competitive app like Uber. Alright, let’s dig in.
What’s a ride-sharing app?
To put it simple, it’s an on-demand service application, which serves as a middle-man between an end user (eg a person looking to travel from point A to B) and a service provider (eg professional drivers).
Most of the Uber-like are mobile-first, which is incredibly convenient and boosts user experience. You only have to tap your screen a few times, pay for the service using your connected card (or other cashless payments solutions like Google Pay or Apple Pay) and voilà – the service you requested is on its way. And that’s the beauty of an on-demand service.
Popular location-based on-demand apps
Now, let’s have a quick glance at the current state of the on-demand apps market.
As you will notice below, not just the taxi industry is being affected by the rise in on-demand apps and a crop of young, agile competitors are disrupting their respective markets in an attempt to dominate it. Here are a few examples:
Taxi apps examples
- Uber – connects drivers with customers in over 900 metropolitan areas worldwide, revenue as of 2021: 17.46 billion USD.
- Lyft – a popular Uber alternative operates in 644 cities in the US and 12 in Canada, revenue as of 2021: 3.2 billion USD.
- FreeNow – a European ride-sharing app that operates in over 100 cities, revenue as of 2019: 2.6 billion USD.
- Bolt – operates in over 150 major cities in 35 countries, revenue as of 2020: 150 million USD.
Car-sharing apps examples
- Sixt – operates in more than 2000 locations worldwide in over 105 countries, revenue as of 2021: 442 million EUR.
- ShareNow – a merger of car2go and DriverNow, operates in 18 cities across the Europe, revenue as of 2018: 69.25 million USD.
- Zipcar – operates in multiple cities in 7 countries all over the world, estimated revenue as of 2019: 278.8 million USD.
Food-on-demand apps examples
- Uber Eats – operates in over 6000 cities in 45 countries, revenue as of 2021: 8.3 billion USD.
- DoorDash – operates in more than 4000 cities across the US, Canada and Australia, revenue as of 2021: 4.8 billion USD.
- Glovo – operates in more than 20 countries globally, revenue as of 2021: 904 million USD.
- Grubhub – operates in more than 3200 cities across the US, revenue as of 2021: 2 billion USD.
As you can see, many of the on-demand apps are doing quite ‘alright’. Motivated by their success, you might want to develop one of your own. Or, maybe you want to further expand your business and recognize a great potential in offering your own on-demand services. No matter your motivation, I’d like to present you with a step-by-step guide to developing such an application in the hope that you’ll find it useful.
Step 1: Define target markets for your Uber app alternative
Kicking-off the app development process with a number of background checks is a wise move. As you’re trying to build an app like Uber, it's a good time to find out a bit more about your potential customers and plan the general direction of the entire app development process.
Before you start preparing anything project-related, you should identify exactly which market are you planning to attack. I’d personally suggest starting with picking a country first. Different countries come with different economies and as a result demand for different types of transportation.
If, for example, it happens that the selected market has loads of scooter hailing apps and no ridesharing apps, it should be taken as a serious red flag. But don’t jump head first into app development of an Uber-like app as there might be other reasons for its non-existence.
To proceed with your market analysis, it would make sense to look for previous attempts to implement your idea, if such had occurred, and find why have they failed. The reasons are endless, but it might clarify which one to avoid for sure. If you happen to find no trace of it, continue your digging.
Staying in sync with my initial taxi hailing app example, go ahead and check the traffic intensity, especially during rush hours. It might not be a good idea to bring ridesharing services to the markets with huge traffic problems.
And what if you want to experiment? Helicopters, planes, flying taxis, submarines maybe?
In this case, picking highly developed economies would make much more sense, hence many of the projects we hear about in the news are being tested in Dubai. Tourist-heavy destinations could potentially be a good fit as well, but you should check its seasonality first.
Step 2: Research and pick your ride-sharing app business model
This step requires you to define the user personas, user scenarios and flows, as well as prepare Business Model Canvas and Value Proposition Canvas. Founders who approach us, sometimes find it to be a waste of time, however, our experience shows that businesses that decide to engage in comprehensive product workshops (which involves working out the business strategy elements I listed earlier) have a much better understanding of the business model, the steps required to successfully complete the project and ultimately yield a competitive product.
Another important part of the research is called user stories, which is basically more of an in-depth description of all the features that you plan to have in your application. It’s not a must-have part, as you can simply go with a simple list of features, but taking this step might help you in the future, eg when estimating time and cost of the app development process.
We take care of all of these components as part of our product design services.
Step 3: Ride-sharing app MVP development
Once the research is done, it’s time to prepare for the development. Obviously, you don’t want to develop a full-scale enterprise application from the get-go. You want to start developing incrementally and building an MVP should be enough to deliver a working product to the market without spending too much time and money. It's a tried-and-tested process for maximizing your ROI of the initial development stages.
What's involved in the MVP development?
Picking the essential Uber-like features
To start MVP development, you need to decide what is the core feature of your ride-sharing app and then add secondary features that will be complementary to the core and deliver your first users a complete Uber-like experience. To do so, we use prioritization techniques based on the following factors:
- complexity of the feature;
- its relevance to the core feature;
- whether it’s best to implement it in the beginning so as not to complicate the next stages of development, or not; and
- how expensive is the development of said feature.
What’s important to remember is that ridesharing services and similar platforms require a set of applications: one for the end-user, another for the drivers or service providers, and an admin panel for you and your employees.
If I had to pick one component that is crucial for the success of an app like Uber, then the customer app, in my opinion, is the most significant for the success of the whole endeavour. Everything that happens in the background doesn't have to be beautifully designed and can be a bit clunky at the MVP stage, but the customer app needs to shine.
Starting with the UX/UI, ensuring a crash-free performance and providing a well-thought-out set of core functionalities is the best way to achieve the wow effect.
Basic features: what your taxi app must have
- Phone number-based registration – you don’t want to verify your users using only email. The reason is simple: you’ll probably run a lot of discounts and promotions, especially during the initial phase. And you don’t want everyone to ride for free just because they can use a 10-minute email and create a new account eligible for the promo, then rinse and repeat. Don’t get me wrong, though. You don’t want them to not use email at all. It’ll be extremely useful for marketing and support communication, so make it obligatory to provide an email as well.
- Booking process – this one is pretty self-explanatory. Nothing too fancy: pick from, pick to, order.
- Trip cancelling – everyone makes mistakes, sometimes the driver takes too long to get to your pickup point or whatever else is the reason, you want to give your users the option to cancel their trip. And don’t hide it inside 10 other menus. This won’t solve the problem. Your app will be removed asap.
- Card payments – this one might be a bit tricky. It seems that making your Uber like app cash-only to start with – is a much easier route, but it isn’t. Unless you have an investor behind your back, who’s willing to throw away a bit of cold cash. I’ll explain what I mean a bit later in the article.
- Basic support – nothing crazy here. Connect an Intercom, FB Messenger, WhatsApp (choose an app that works best for your market) or simply create a quick FAQ with redirection to your support email.
- Basic ticket validation – if your application issues tickets to its users, for example in the case of a bus hailing platform, you need to find a way to verify the person getting onboard is the right person. During the MVP stage, it’ll be enough to make it manual. The passenger enters the vehicle, shows his ticket, the driver checks it and manually marks it in their app as ‘validated’.
- Push notifications – keeping the user informed about the status of their ride, or that the driver has arrived, is important from the CX perspective.
- Navigation for both passengers and drivers – this one is also self-explanatory.
- Estimated time of arrival and live ride location – having frustrated customers is one of the cases you don’t want to face, especially amongst early-adopters, who’ll be crucial for your app’s success. Showing them when they can expect their transport to arrive and where it is at the moment is one of the core functionalities of an Uber-like platform.
- Basic settings – ability to change their phone number, password, email, notifications. That should be enough for now.
- Vouchers and friend-invite promotions – this one is also crucial. Correct me if I’m wrong, but one of the reasons you’ve tried Uber at some point of them entering your local market is a hell of a rain of promotions. They’ll drive tons of users to test out your application. Integrate with a SaaS of your choice, and you’re good to go.
Advanced features: what your Uber-type mobile app could have
- Cash payments – Now, back to the cash issue. There are few problems with cash payments. Foremost, it’s difficult to track. You’ll have to prepare fraud prevention processes or some other systems to keep it under control. Second of all, what happens when you have a cancellation fee in place? If I order a cab, select cash payments and cancel it after some time, in a card payments situation you’d simply charge me a cancellation fee and there’d be no issue. But how to charge something non-existent? To handle this, you’d require to have an internal wallet for each user. It’d be charged in situations like the one I’ve described before, when you need to fine a user for something or when you need to process a refund. It’s amongst common tactics to refund not real money, but some internal credits, that can be used later in the app.
- Multi-seat tickets – this one is also important if you’re building a bus hailing service. It’ll allow you to cover not only regular passengers, but also parents who’d buy tickets for themselves and their kids or maybe nurses taking care of people with disabilities etc. Just remember to limit the number of tickets that can be bought by a single user. Otherwise, there’s definitely going to be someone who’d like to rent a whole bus for a fraction of its cost.
- Trip scheduling – ordering a trip for later sometimes comes very handy, so it’s a good-to-have feature.
- Advanced support – instead of explaining, I’ll simply redirect you to have a look at Uber’s support. It’s too damn good.
- Trip and driver/passenger ratings – self-explanatory.
- Split payments – I guess at least once in our lifetime we’ve faced the situation when either we or a friend of ours paid the full bill and the need to pay back was forgotten. Enabling your users to split the bill makes life just so much easier.
- Extended settings – adding a profile picture, specifying your home/work addresses, security measures, advanced notifications system, light/dark themes etc.
- Advanced ticket validation (ie ultrasonic, QR-codes) – this one you’ll want to implement for a few reasons: fraud prevention, less time-consuming, no human errors. Which type of validation to choose? Up to you. In one of our projects, we’ve used the ultrasonic one. It allowed us to make ticket validation a magical user experience, because… *silence*… and you’re validated.
- Business accounts and invoicing – set of additional features like single ride or monthly invoices.
- Driver tipping system – giving a tip is a great way to say ‘Thank you!’ for an extraordinary service and will help your drivers to stay happy as it allows them to earn more.
Service provider app
Now let’s talk about a service provider app. In the case of an app like Uber, that would be the drivers' app. First, you need to think about how the service provider will be using your solution. When we were building a set of applications for bussr — a bus hailing app from Indonesia, we were designing the application with bussr drivers in mind, not going for some fancy-design ideas.
As a driver, you don’t want to spend a lot of time on your phone app, because you need to focus on the road ahead of you. In this case, the screens have to be minimal and present a very clear indication of what the driver’s destination is in any given situation.
When they’re driving, the navigation screen only displays information about their route and upcoming stops. When they are selling and validating the tickets, the screen only displays the relevant information and was specifically designed to make it easy to quickly correct mistakes. For example, if the driver validated the wrong person, then a simple swipe could undo that action while at the same time, miss-swipes are avoided by requiring the swipe to be of a certain duration.
When it comes to the features, let’s point out a few general ones:
Basic features of a ride-sharing driver app
- A simple ID card-based registration process – useful if you want to be able to easily recruit drivers or other service providers without getting into too much bureaucracy, at least at the very first stage of the application process.
- Basic settings – allows service providers to change basic personal information, password, email, invoice details, phone number etc.
- Navigation – you don’t have to develop a custom navigation system for your taxi app, simply redirect them to the navigation apps of their choice.
- Service delivery process – the app should allow service providers to be able to deliver their service and confirm the successful delivery or, in case of an unsuccessful one, process a free cancellation.
The rest will be pretty much defined by the specificities of what you’re offering as an on-demand service business.
Admin app for an Uber-like app
Since the whole bussr backend was written in Node.js (many well-known apps use Node.js on their backend), going with a highly customizable solution that can be integrated with all indispensable external services (like Google Assets Tracking) was a no-brainer. bussr employees could define bus routes by simply using Google Maps integrated into the admin panel, thereby skipping the need to use latitude and longitude, making it less likely that an error will occur in the process.
Picking the right technology stack
Now, let’s talk about the technology itself. When it comes to making that decision, there are a lot of variables that might influence the outcome. Consider the following examples:
- You could have a CTO that knows a specific technology and decide to choose that for your technology stack.
- You might need to use a specific technology to develop a specific feature.
- You might solicit advice from an external software development agency to use the technology within their expertise.
There’s no wrong choice if you have an experienced developer. Most apps like Uber are not rocket science.
Picking a development and design team
Okay, the technology is decided on, and it's time to star development. You can follow one of these paths:
In-house development – this is a simple one. You recruit your own team of developers, project managers, testers, designers, and form a development team. This approach has a lot of pros, but it’s time-consuming and costly. If a recruited developer doesn’t turn out to be a good one then you can’t swap them as easily as you could if you were working with a nearshore development company for example.
Freelance development – probably the cheapest option but also the riskiest one. You don’t have much control over the development process and that’s really not something you want, but it can be useful if you have a very low budget and want to develop something tangible to show to the investors before you commit to full scale development.
Nearshore / offshore development – you can outsource your development cycle to an experienced team of developers. It has much lower risk than the freelance option due to the fact that you'll be dealing with a registered company; they have invested a lot in their workforce, so it doesn’t make sense for them to provide you with anything less than their very best. After all, they have a reputation to maintain. Also, they will have tons of expertise and a large portfolio of work. And if one of the developers assigned to you doesn’t perform as expected, swapping them for another experienced developer is most likely a matter of days or weeks, not months.
Ultimately, this choice will depend on your budget, your investors’ expectations, etc.
Delivering the MVP
Once everything is ready to go, you need to brace yourself for the next 6-12 weeks it takes to develop a functional MVP. Please make sure you’re certain about the set of features you’ve selected for the MVP stage, as changing them mid-cycle will only postpone the delivery and frustrate your team.
Since you’re not going to be involved in the development itself, you could focus on sales and marketing in the upcoming weeks. You don’t want to develop an app that will fail to compete with other apps and will inevitably make your business a flop.
Step 4: Marketing and user acquisition
Marketing. Although marketing itself deserves a separate article, I’m going to briefly mention a couple of marketing strategies that are specifically useful for promoting apps like Uber.
If you have ever followed launch campaigns from Uber, Bolt, other taxi apps or Uber Eats, then you know that for the first few months (and sometimes longer), most people use their on-demand apps on a voucher-only basis. ‘50% discount’ codes are a common sight in your inbox.
It’s a costly strategy and the companies usually pay full salary to their service providers, while earning only 50% per every order. From the business perspective, this requires a lot of capital, but it works and certainly attracts new customers.
When the promotional period will end, you’ll face a decrease in the number of orders as those who are not willing to pay full price will stop using your services. Hopefully, you should also have lots of users who are happy with your services and will stay with you, forming your core user base.
Building situational awareness
Just like vouchers, discount codes can be used strategically to target both service users and providers in order to build your brand and create market presence.
For example, here’s an email DoorDash sent to their delivery personnel before the Valentine’s Day:
Another good example is one from Uber (again). Here where I live in Wrocław, Poland, we don’t have UberCopter, and it isn’t easy to order a helicopter flight. However, a few years ago Uber ran a time-limited promo where you could get a couple of minutes on a helicopter flight. Only a few people managed to get the flight before the promo ended but the scale of social media reach went through the roof.
The opportunities are countless and if you come up with a creative idea then media outlets will be quick to pick up the news – they do need exciting material to run with after all.
Step 5: Further development and growth
Once you’ve successfully developed your MVP and acquired your first customers, there won’t be any time to stop and celebrate with a bottle of Crystal somewhere in the Maldives. Rather, you will need to push forward and essentially repeat the cycle from the beginning.
The way we usually do this for our clients is we organize an MVP stage retrospective meeting. During the gathering, we write down all the good and bad decisions made throughout the process in order to be even more effective going forward. After the retro, we schedule another product workshop and start brainstorming ideas for further development. Then, we prioritize those ideas and the cycle goes on.
Using this approach, we make sure we stay agile while being focused on a concrete set of goals we aim to achieve using short incremental periods.
Step 6: Fraud prevention
Uber as well as apps similar to Uber all face one huge problem – fraud. Detection and prevention of such manoeuvres requires a lot of work. Some people come up with incredible ideas on how to cheat the system, but only a few of those are able to think everything through.
For example in Uber, drivers have a set of target rides which if they hit – they get a bonus. To convince the system that they did enough rides, people will use various fake location apps in order to spoof their GPS data and complete rides while not doing any. But, there’s a ‘but’. Knowing people are doing this, Uber gathers a wide range of location data, speed, and altitude amongst other telemetry.
If Uber suspects someone of trying to cheat the system, they can pull, for example, altitude data and compare it with specific location data. This is what they would get:
Smart stuff, isn’t it?
Building an Uber-like application
As you can see, building an app like Uber is no small task, but if you structure it the right way, it becomes a simple process that can be followed with minimal disruption during each cycle.
I sure hope that this guide is useful for everyone who’s willing to dedicate their time, effort and money to enhance whatever market could benefit from a ride-sharing app, or other location-based on-demand service.
If you need any help or would like to take advantage of our extensive experience in building scalable and user-friendly software then feel free to reach out to me at firstname.lastname@example.org.
Until next time. Cheers!