Uber was a revelation of sorts for the transport, taxi and mobile app business. It gave a whole new dimension to the word “service”. New terminology gained ground : “On-demand services”, “hyperlocal delivery” etc. People caught on to the Uber model, improvised and built businesses around it.
~ With inputs from Ashutosh (Technology Expert @ Appscrip)
The secret of Uber is in its simplicity as it appeals to the baser needs of a human. You don’t need to wait and jostle with others for hailing a ride. Just touch your mobile screen and viola the taxi is right there where you need it.
No wonder many people want to replicate the Uber app i.e make a copy or clone it. The term Uber Clone became popular, trending in business circles.
What then is an Uber Clone?
It is a taxi booking app software that has all the features of Uber. Plus the customer can have add ons and extensions of their own. What better and faster way to launch an online taxi business than cloning the features of Uber? Saves you lots of time and loads of money too.
Small business owners, entrepreneurs, and startups in their quest to start their taxi business often seem confused on how to go about building an Uber clone app.
At Appscrip, we have built hundreds of Uber clones with our dynamic and powerful uber clone script. We have put in hours of research on what works in the taxi business and come up with a sterling product which we named as KARRY.
Below we discuss the right technology choices we made in order to build our very own Uber like app.
Which design patterns should I use for Android Uber Clone? | Should I use Java or Kotlin for Android?
Android apps written in java with strict adherence to MVP architecture and support of the latest version – Android Pie.
Which language should I build an ios app in? | Objective C or Swift?
Ios apps written in swift with strict adherence to MVVM architecture and support of latest version- iOS 13.
What design patterns should I follow while designing Admin / Web app for an Uber like app? / Should I use Angular or PHP or React Native for developing webadmin for Uber Clone? / Which web technology should I use for writing the web admin in Uber Script?
WebAdmin- Written in Php or angular js with strict adherence to MVC architecture.
What databases are recommended for an Uber Script? | SQL or NOSQL Database?
Use NOSQL – Mongo or Cassandra
Which database should I use for lower response time?
In Memory Database Redis or Amazon ElastiCache.
Use REDIS for High availability, Lua scripting, transactions, on-disk persistence, pubsub system, versatile data structures, cluster support – used as a in-memory data structure store, cache and message broker for operations that require low latency.
Which database provides high fault tolerance, high availaibility and high performance to build an Uber like app? / How to make a highly scalable Uber app? / Should I enable clustering for databases?
Either of the following can be used –
Horizontally scalable mongodb cluster with indexing, sharding and replica sets for high performance, fault tolerance and availability as the primary database.
Cassandra for elastic scalability, always on architecture, fast linear-scale performance, flexible data storage (structured, semi-structured, and unstructured), easy data distribution, transaction support and fast writes support as the secondary database.
What is the most optimal way to send booking requests to the nearest driver (geospatial queries)?
Redis for efficient geospatial queries.
Queuing & Messaging Systems
How to handle large number of bookings reliably in an Uber like app?
We should add a queing system which acts as the buffer and decouples the sender from the producer of the data, handling the mismatch in the rate of the incoming booking requests and bookings dispatched to avoid missing dispatch of any incoming booking request, during high volumes of traffic.
Which queing systems should I use Apache Kafka or RabbitMQ?
RabbitMQ as asynchronous messaging broker and queuing system for queing large number of incoming booking requests. It provides reliability, including persistence, delivery acknowledgements, mirrored queues, publisher confirms, flexible routing and clustering for high availability.
Apache Kafka to be used as the distributed publish-subscribe messaging system because of its scalability, high volume data handling capability, fault tolerance, reliability, durability, performance, zero downtime extensibility and replication support. It is ideal for log management system.
How to develop a fast, low resource consuming, highly performant and scalable backend for Uber like app? / Which programming languages are recommended for writing the APIs?
Which is more suitable for writing backend APIs? | Nodejs or Python?
NodeJS – As the primary language for all the Business logic APIs .
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data intensive real-time applications that run across distributed devices.
Python – For the apis(heatmaps) which includes large number of data manipulations/computations/crunching operations due to its standard library being large and comprehensive.
How to develop a realtime analytics engine?
Use Apache Flink as the distributed streaming data-flow engine.(Realtime analytics)
Apache Spark as the cluster-computing framework.(Machine learning)
Python– For the analytics dashboard due to its claims to combine remarkable power with very clear syntax and large set of pre available libraries.
Serverless architecture or cloud deployment?
We can go with either way as each comes with its own set of advantages and disadvantages .
Serverless architecture advantage – No pre assesment of resources required and can auto scale the resources alloted to the application based on surges in the incoming traffic volume.
Disadvantage – high cost and being a niche technology its hard and expensive to find trained human resources/engineers.
Cloud deployment advantage – Easy to get started due to availability of large number of trained resources.
Disadvantage – Pre-allocate the server resources which may lead to under or over allotment of resources, both of them being dangerous leading to either failed requests due to insufficient resources, or higher price being paid for the resources which are never actually used.
What are the options available for serverless architecture for taxi dispatch software system?
Amazon Lambda (with Amazon API Gateway) or Firebase Cloud functions.
Payment & Wallet
Which payment gateways should I use?
For the MENA region – Payfort
Europe/USA – Stripe/Brainstree.
UK – 2Checkout, Authorize.net, PaymentExpress.
Canada – First Data GGE4,Moneris,PayPal Payflow Link,PayPal Payflow Pro.
How do I secure the transaction in taxi booking app software?
Use a payment gateway or a wallet with 3D Secure authentication enabled.Ex- Stripe or Paypal’s Braintree.
Use encryption to store any client payment method/card details on backend.
Never store any payment method secrets like CVV on the app side and their transmission should be secure and only over https.
All the backend code is broken into several microservices and dockerized to achieve higher Return on Investment (ROI) & cost savings, Standardization & productivity, CI efficiency, compatibility & maintainability, simplicity & faster configurations, rapid deployment, continuous deployment & testing, Support multi-cloud platforms, isolation and security.
Should I use Docker/Kubernetes for deployment?
Kubernetes and Docker are both fundamentally different technologies but they work very well together, and both facilitate the management and deployment of containers in a distributed architecture.
Should I use Monilith or Microservice architecture?
A monolithic application will be much easier to build, make changes, deploy, and provide testing. The microservices architecture is more beneficial for complex and evolving applications. It offers effective solutions for handling a complicated system of different functions and services within one application.
Which method should I use for communication between Microservices?
gRPC- For inter microservice communication.
How to make the Uber Clone app secure?
How to restrict/rate limit the malicious traffic using an API gateway? Should I use a commercial or a opensource API gateway? Which are the popular opensource API gateways?
Open source API gateways like Kong, Tyk, KrakenD, Gravitee are equally good with their commercial counterpaets, only thing lagging being the support.
Amazon API Gateway is the best comercially available enterprise api gateway in the market.
We use the fork of an open source api gateway written in GO, with auth server embedded in it to handle the token refresh and expiry, routing to microservices, rate limiting and handling authorization of the APIS.
How can I hide/mask my number from uber driver? How to prevent drivers from interacting with potential customers outside platform?
Through the use of “Twilio masked calling” which sets up phone number proxies to keep parties from knowing each other’s phone numbers during a call and helps keep transactions from happening outside the platform.
Real Time Messaging
How to make a low battery consuming Uber like app ? /How to reduce the battery consumption? / How to efficiently update the driver or passenger location when app is closed or is in background? / Which is the most scalable, low cost publish-subscribe system, for realtime location update/tracking?
MQTT is the mosty battery efficient(Optimized for low battery usage esp. ideal for IOT devices), open source pub-sub system used for all realtime message transmission across the platform(apps, backend etc).
Commercial pub-sub systems- PubNub or Google cloud pub-sub, Ably.
Example usage- Real time driver location tracking while on a booking.
How can I enable realtime chat between driver and customer within app/without leaving app/inapp in an Uber Clone Script?
Firebase Realtime Database- For implementing realtime chat between driver and customers.
How can I securely and cost effectively store user media?
Firebase Storage or Amazon S3 Storage are the most popular enterpeise grade cloud storage available at very competitive prices. They can be used for storing and sharing user-generated content like images (e.g. license documents), audio, and video with powerful, simple, and cost-effective object storage built for Google/Amazon scale.
How can I view/log the app crashes?
Firebase/Fabric crashlytics as the primary crash reporter for the apps.
How to send realtime notifications or run personalized or targeted marketing campaigns, offer exclusive deals to customers or incentives to drivers?
Firebase cloud messaging to reliably deliver push notifications to multiple devices in one shot.
Which is the cheapest way to send SMS for number verification at time of user signup?
Twilio SMS as the sms platform for OTP number verification on user or driver signup.
How to add in-app calling in Uber like app/ Uber Clone?
Commercially available Twilio Voice sdk or opensource solutions based on WebRTC(AppRTC or Janus) to enable in-app audio or video call between driver and customer.
How to reduce the Google APIs cost/billing? How to enable key rotation to reduce Google API usage cost?
Google billing management- to setup triggers when the allotted quota for a project is exceeded and rotate the API keys, to reduce the billing.
Google Places API for searching the address while choosing destination and while requesting a booking.
How can we determine the ETA for a trip? / How to calculate the shortest path/avoid traffic between a pickup and drop location?
Google Directions API for realtime path plot from pickup to drop location and ETA (estimated time of arrival) estimation.
How to enable virtual customer support or add ticket management system in taxi dispatch software or Uber Clone? / How do I automate customer support? How can I provide customer support without any human team? / How do I reduce the cost of customer support?
Zendesk as ticket management system for tracking, prioritizing, and solving customer support tickets. It can be used to reduce the size of the human customer support team by automating replies for the common customer queries adn allowing customers to raise tickets for any of their grievances with the platform.
It’s important to have the right taxi app developers on your team. Your developers shouldn’t only understand apps – but they should specifically understand the functions of taxi booking and be highly experienced in building technology with a lean process.
At Appscrip, we have worked with hundreds of taxi startups – helping them to bring their app ideas to life.