Uber is the flag-bearer of the sharing economy.
It’s so popular that if an entrepreneur builds a business model like Uber for another industry, we say that he/she has built an “Uber of xyz industry”!
Planning to launch a travel channel app like Uber? Here, you can learn how to build a travel app like Uber.
A history of Uber
Everyone knows Uber, however, a few quick points are in order:
- Garrett Camp and Travis Kalanick founded “UberCab” in 2009.
- The company had a beta launch in May 2010.
- They officially launched their cab-hailing services and mobile app in San Francisco, USA, in 2011.
- In the same year, the name of the company became Uber.
- At the time of writing, it’s the most popular transportation network company of its’ kind in the world.
Read this Wikipedia page for more details on how Uber emerged.
How does Uber work?
Uber works as follows:
- It’s a free app.
- The company has Android and iOS apps. They have a web app focusing on limited functionalities like sign-up.
- There are 2 mobile apps. One is for drivers, whereas the other is for riders.
- A rider opens the app and enters his/her destination. Riders see a few options for the ride, where waiting time, car size, and price may vary.
- They select their preferred option, confirm the pick-up location, and request for a cab.
- A nearby driver sees the request and accepts it. The rider gets a notification confirming the cab booking. When the cab is a minute away, the rider gets another notification.
- The driver picks up the rider, and they verify the destination.
- The app provides detailed directions to the destination.
- The driver and the rider can rate each other on a scale of 1 to 5 stars after the trip ends.
Read “How Uber works” for more information. Uber also provides other services, e.g., “Uber Eats”, “JUMP Bikes”, etc.
The popularity of Uber
Ubers’ popularity is evident from the following statistics:
Download Our Project Specification Template
- As of July 2017, Uber had received approximately $11.56 billion in investments.
- The company operated in 60 countries and 400 cities, as of November 2018. Read “What cities is Uber in? What countries?- Find out here!” for more details.
- As of May 2018, Uber stood as the largest ride-hailing service worldwide with a market value of $72 billion.
- A survey found that as of May 2018, 76% of the respondents in the US mentioned that they were familiar with the Uber ride-hailing service.
- As of Q2 2018, Uber generated gross bookings of $12 billion worldwide.
Read “Uber Technologies- statistics & facts” for more details.
Developing a travel app like Uber
Let’s now go through the steps involved in developing a ride-hailing app like Uber. The steps are as follows:
1. Agree on the project scope
Uber has many services. I recommend that you agree with your business stakeholders about the initial project scope. I suggest the following project scope to start with:
- Develop a web app: This should allow sign-up, furthermore, it should provide information about the business;
- Android app development;
- iOS app development.
Of course, you need to include both the rider and driver apps in the scope.
2. Select the right software development methodology
You should launch a “Minimum Viable Product” (MVP) with the above project scope, for one geographic region. Your subsequent iterations can include the expansion into other geographies, and offering additional services.
Agile is the right methodology to support this iterative development, and I recommend you use it. Read “Waterfall vs Agile: which methodology is right for your project” to know why Agile suits this project.
3. Strategize for future internationalization
While launching in one geography initially, you should plan ahead so that you can easily expand in other geographies. The app design and development should follow app internationalization guidelines, for e.g.:
- Consider legal aspects in different geographies;
- Prepare to deal with data-related restrictions;
- Separate content from code;
- Media internationalization;
- GUI internationalization.
Read “The ultimate guide to mobile app internationalization” for more details.
4. Build your development team
Build a team with the following roles:
- Business analysts (BAs);
- UI/UX designers;
- Web developers with Node.js skill;
- Android developers with Kotlin skill;
- iOS developers with Swift skill;
- A project manager (PM).
5. Use the “Scrum” technique to manage the project
“Scrum”, a popular technique to manage Agile projects can benefit your team. I have explained it in “How to build a Scrum development team?”. It works as follows:
- The PM performs the “Scrum master” role.
- You have small, cross-functional teams where designers, developers, and testers work together. These are called “Scrum teams”.
- A “Product owner” provides requirements in a document called “Product Backlog”.
- Iterations are called “Sprints” in this technique.
- The team holds “Sprint planning meetings”. They estimate the requirements, prioritizes them and slots them in sprints.
6. Use an effective PM tool
I recommend you use Asana. It’s a well-known PM tool for managing Agile projects. I have described it earlier in “The 10 best Agile project management tools in 2018”.
7. Get a PaaS account for the web app
You should focus on design and development. Let a “Platform as a Service” (PaaS) provider handle cloud infrastructure, application monitoring, etc. I recommend you sign-up for AWS Elastic Beanstalk, i.e., the AWS PaaS.
Using a PaaS has many advantages, e.g.:
- The PaaS provider handles cloud infrastructure, networking, storage, etc.
- PaaS providers manage the server, middleware, operating systems, and runtime environments. You concentrate on coding and application data.
- You can easily integrate database services and other 3rd party APIs when using a PaaS.
- Build management, test automation, deployment etc. are easy when you use a PaaS since they have DevOps services.
- PaaS providers have application monitoring and auto-scaling solutions, therefore, you can easily scale your app.
You can read “10 top PaaS providers for 2019” to know more about these advantages.
8. Sign-up for an MBaaS account for the mobile app
Now that you have signed-up for AWS Elastic Beanstalk, use the same AWS account to sign-up for AWS Amplify, i.e., AWS “Mobile Backend as a Service” (MBaaS). Like most other MBaaS providers, AWS Amplify offers several advantages, e.g.:
Read How We Helped a Marketing Company to Build a Back-Office Custom Ads Dashboard
- They handle cloud infrastructure, networking, persistent storage, etc.
- Your Uber-like app needs robust user management, and MBaaS providers address this.
- A mobile app targets multiple platforms and devices, and MBaaS providers handle this complexity.
- Security capabilities of MBaaS providers are important to you.
- 3rd party API integration is easy with an MBaaS provider.
- Scaling the app becomes easier when you use MBaaS.
- You can easily implement push notification when using MBaaS.
Read about these advantages in “How to choose the best Mobile Backend as a Service (MBaaS)?”.
9. Get the device location iOS framework
An Uber-like app needs the device location to work. For the iOS app, you need to work with the “Core Location” framework of Apple for this. The following quick points are relevant here:
- You can access the iOS software development kits (SDKs) to incorporate this framework.
- The framework uses hardware features like WiFi, GPS, cellular hardware, and more to gather data.
- You can access the detailed documentation, which covers all relevant aspects like authorization, location updates, region monitoring, geocoding, etc.
10. Get the device location Android API
You obviously need the device location for the Android app too. You need to use the Android location services for this. The relevant facts are as follows:
- Android uses the classes in the “Android.location” package for this service.
- Your app gets access to the location services supported by the device.
- You can access their documentation here.
- The documentation covers all relevant aspects like getting the last known location, receiving location updates, displaying a location address, etc.
11. Get the iOS navigation framework
Navigation is another key aspect of an app like Uber. For the iOS app, you need to use the MapKit framework. This works as follows:
- You can use it to display map or satellite imagery from your apps’ interface.
- The app can determine placemark information for map coordinates.
- There are iOS SDKs.
- A developer can follow the detailed documentation. The documentation covers all relevant aspects like map fundamentals, map coordinates, map customization, directions, error handling, etc.
12. Use Google Maps in the Android app for navigation
“Google Maps Platform” is a good way to implement the navigation feature in the Android app. You can use it as follows:
- There is “Maps SDK for Android”, which you can use in the Android app development.
- This maps platform can provide routes from one point to another. This includes high-quality directions and real-time traffic updates.
- The following APIs support the routes feature: “Directions API”, “Distance Matrix API”, and “Roads API”.
- There is also the “Places” feature, which supports finding a place, geocoding, geolocation, etc.
- There are Android SDKs and APIs to implement the “Places” feature.
Read “Google Maps Platform documentation” for more details.
13. Get the necessary resources to implement “Push Notifications” in the iOS app
An Uber-like app needs “push notifications”. You can use the “Notification” framework of Apple to implement this in the iOS app. Use the following resources:
14. Use “Firebase Cloud Messaging” to implement “Push Notification” in the Android app
You need to use “Firebase Cloud Messaging” (FCM) to implement “Push notifications” in your Android app. Note the following:
- FCM is a cross-platform messaging solution.
- A programmer can use it to send notification messages.
- FCM has an Android SDK.
- Read “Set up a Firebase Cloud Messaging client app on Android” to set up FCM for your Android app.
- You also need the “Firebase Admin SDK” to send the message. Read “Your server environment and FCM” for more information.
15. Use Twilio for SMS
A travel app like Uber needs to send SMS to riders and drivers. The volume of SMS could be high. I recommend you use the communication APIs from Twilio for this. This involves the following:
- You need to use their “Programmable SMS”.
- Follow their detailed documentation here.
- Check their pricing plans here.
16. Use the “Stripe” payment gateway
The app should allow riders to pay using credit or debit cards. This requires a payment gateway integration. I recommend you use Stripe. Note the following:
- Stripe offers an Android SDK.
- There is also an iOS SDK.
- Developers can follow their detailed documentation to implement card payment.
Check out their pricing plans.
17. Develop, test, and deploy the web app
The web app will have limited functionalities. It should allow sign-up, and it should display generic information. You need to take the following steps to develop it:
- Use js, which is a highly popular runtime environment for web app development. It’s open-source, and thousands of developers have created many valuable frameworks and tools for this. It’s performant and helps in scaling web apps.
- Use js, a popular Node.js framework for developing fast apps.
- AWS Elastic Beanstalk supports Node.js. Read “Deploying Node.js applications to AWS Elastic Beanstalk” for more information. It’s a comprehensive guide and covers various aspects like using a database in the app, deploying the app, etc.
18. Design the mobile app UI
Design an effective mobile app UI, as follows:
- Use an appropriate mobile navigation menu. For e.g., the main functionality in the rider app is to locate a cab. You should use the “Hamburger menu” for this. Read “Mobile navigation menu examples” for more guidance.
- Choose an appropriate mobile app color scheme from the trending ones.
- Follow the best practices for mobile app icon design.
19. Develop and test the Android app
Code and test the Android app as follows:
- Use “Android Studio”, the popular Android “Integrated Development Environment” (IDE).
- Kotlin is a good choice of programming language. Developers have higher productivity due to its’ concise syntax, and writing error-free code is easier with it. Apps using Kotlin are fast. Coding with Kotlin using Android Studio is easy, however, you can read “Get started with Kotlin on Android” if you need guidance.
- Integrate the SDKs/APIs for device location, Google Maps, FCM, Twilio, and Stripe.
20. Code and test the iOS app
iOS app development and testing involve the following:
- Use Xcode, which is the IDE for iOS development.
- Code the app using Swift, which is a modern programming language for iOS development. Developers can code fast, performant apps with it. They can avoid common coding errors, and the code is easily maintainable.
- You need to integrate the SDKs/APIs for device location, navigation, push notification, SMS, and payment gateway.
21. Publish your mobile app to the app store
22. Manage the project
The scrum master needs to do the following to manage the project:
- Organize “Daily stand-up meetings” for project status tracking.
- Obtain project stakeholder approval for a sprint in a “Sprint review meeting”. The meeting involves a demonstration of the features, and the features should work.
- Conduct a “Sprint retrospective meeting” after the sprint so that the team can learn lessons.
Have grand plans to launch an Uber-like app?
A project to develop an Uber-like app is a complex one. The complexity increases as you introduce more services and features. Consider engaging a capable software development company. You can read “How to find the best software development company?” before you select a development partner.
Download Our Project Specification Template
Latest posts by Aran Davies (see all)
- Can Distributed Computing Take On The Might Of AWS? - September 17, 2019
- AI Solutions To Digital Identity - September 15, 2019
- 10 Great Tools For VR Development - September 14, 2019