As Uber continues to generate loss as a public company, the sharing economy is getting into more and more areas of our lives. Many entrepreneurs or yet-to-be entrepreneurs want to use Uber's experience and build an app based on well-developed, market-verified concept. Naturally, it comes to the point when you start looking for more details on how to design app like Uber.
Since we've built a few of similar projects, here's my top 6 tips on developing an app similar to Uber.
Tip #1 - Define target markets for you Uber type app
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 cab hailing apps and no scooter hailing app, it should be taken as a serious red flag. But don’t jump head first into app development of a scooter 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 scooter example, go ahead and check the traffic intensity, especially during rush hours. It might be a good idea to bring scooter hailing services to the markets with huge traffic problems, as it will enable faster commute in time when cabs won’t be efficient at all. Or you might find out that, actually, in a country of your choice, no one really cares about scooters and prefers bikes instead.
And what if you want to experiment? Helicopters, planes, flying taxis, submarines maybe?
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 seasionality first.
Tip #2 - Analyse the structure
I’ve had quite a few encounters when early stage startup founders were primarily focusing on estimating and getting funds for their mobile apps (when the main product is an app) and forgetting it’s rarely the only part of the whole system. So, just to make sure this won’t happen to you, let’s have a look at a very standard set of software that make up an Uber like app.
- Passenger App - an app for end users, who will use it to book the rides.
- Driver App - an app for drivers, be it cab drivers, bus drivers or else.
- Admin Web Panel - a web app for your company employees who’ll manage business-related matters: trips, finances, statistics, analytics etc.
For example, our open-source admin panel - AdminBro can be easily integrated into your system with custom features dedicated to apps similar to Uber
- Fleet App - if you plan to offer transportation companies access to your platform, they will want a tool for managing their fleet.
- Fleet Web Panel - as above, but a bit more advanced management tools.
Tip #3 - Pick the right set of features
When it comes to the set of features the app is going to have, each type will have its unique requirements. For example, during our work on a bus hailing solution for an Asia market, we've faced the problem with ticket validation onboard of a bus.
First off, we’ve started with the most obvious solution - driver sees the ticket presented by a passenger, confirms it in the app, boom, it’s done. That’s when fraud prevention appeared on the horizon, which I’ll cover a bit later in this article as well.
We’ve proceeded to look for a more secure solution. QR codes? Flixbus, a German transport giant, uses them all the time. But it requires additional actions by both user and driver. Fine, we can put the QR out/inside the bus. Still, additional activity and a bit time consuming.
How about sound? Well, that sounds interesting (pun intended). In the end, we’ve integrated one of such tools that allowed us to use ultrasonic sound to verify tickets on the go. Passengers would open their ticket in the app, the phone would become a transmitter, driver’s app - a receiver. The signal would be sent, verified - feel free to take your seat.
This feature is really pointless in an Uber clone app, though. So, it’ll be wise to think through your particular idea and do some research on the available tools. It will allow you to be more precise when estimating needed funding. Developing a feature from scratch is much more costly than paying for a license or a SaaS.
Anyway, let’s compile a list of features we’d found in an app like Uber and divide them by their importance for the MVP stage.
Basic - what your taxi app must have
- Phone number based registration - you don’t want to verify your users using regular email method. 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 because they can just use a new 10 minute email and create a new account eligible to new users promo. 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.
- Trip ordering - this one is pretty self-explanatory. Nothing too fancy: pick from, pick to, order.
- Trip canceling - everyone makes mistakes, sometimes the driver is taking 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.
- 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 down the list. Coming back to card payments - it’s a matter of integration with an existing payment gateway, which shouldn’t take a whole lot of time and it’ll allow you to handle payments, refunds etc. out of the box. If you don’t know which gateway to choose, I’ve shared a few advices in one of my articles - "What to consider when picking a payment gateway?".
- Basic support - nothing crazy here. Connect an Intercom, FB Messenger (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. That’s what we’ve invented tickets for. During the MVP stage, it’ll be enough to make it manual. Passenger enters the vehicle, shows his ticket, driver checks it and manually marks it in their app as “validated”.
- Navigation for both passengers and drivers - this one is also self-explanatory.
- Estimated time of arrival and transport location live - having frustrated customers is one of the cases we don’t want to face, especially amongst early-adopters, who’ll be crucial for our 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 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 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 - what your Uber type mobile app could have
- Cash payments - Now, back to the cash issue. There are few problems with cash payments. First of all, it’s difficult to track. You’ll have to prepare fraud prevention processes or some other system to keep it under control. Second of all, what happens when you have a cancelation fee in place. If I order a cab, select cash payments and cancel it after some time, in a card payments situation you’d simple charge me a cancelation 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 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 in my example of 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. Just remember to limit the number of tickets that can be bought by one 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 profile picture, specifying your home/work addresses, security measures, advanced notifications system, light/dark themes etc.
- Advanced ticket validation (i.e. ultrasonic, QR-code) - 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’re using the ultrasonic one. It allows us to make ticket validation a magical user experience, because *silence* and you’re validated. It’ll also be time efficient.
- 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 will allow them to earn more.
If you’re reading this and have an idea for a feature you’re missing from Uber and Uber like applications, feel free to drop me a line at email@example.com.
Tip #4 - Fraud prevention
Uber as well as apps similar to Uber, all face one huge problem - fraud. Detection and prevention of such maneuvers 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 wide range of location data, speed and altitude amongst others.
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:
As you can see, some of the trips are… well… in mid-air. Slightly suspicious, don’t you think?
There are plenty more cases described by Uber themselves, so I highly recommend to go and check the whole Fraud Prevention tag on their Uber Engineering blog.
Tip #5 - Choose the right technology stack
Speaking of engineering, there’s no single perfect stack in this case. Uber has native mobile apps, we’re building our client’s mobile apps using React Native.
Why, you may ask? Well, I’m not going to jump into the whole Native vs. React Native topic too deep.
Few years ago that wouldn’t be possible, but as of now, React Native has advanced to the point where we can use it to cover all of our needs. Uber even used it in the UberEATS app. Chris, a colleague of mine, wrote about it in his article on popular companies that use React Native in their products.
Tip #6 - Estimate the cost of developing your taxi platform
Very sensitive topic for many software companies, but I’m going to touch it anyway.
When it comes to timeline and cost of for developing a working MVP for Uber like application, from our experience, it should take around 3 months and 100-150k USD. It obviously depends on many variables, so in our case, let’s assume a team of 5-7 people: PM, QA, developers and a UX/UI designer.
Surely, you can make it cheaper, just don’t forget that code quality, technological debt as well as technology stack might come and bite you later...
That would be it - a brief overview on how to create an Uber like app. If you’d like me to dig deeper into some of the things I’ve mentioned, like ultrasonic ticket validation, let me know in the comments, via Intercom or email, and I’ll do my best to cover it in my next post.
Hope you enjoyed the read, see you in the next one. ;)