Magazine

Build An Uber Like App | Ultimate ‘Uber Clone Script’ Bible

Posted on the 09 January 2020 by Aben @appscrip
Build An Uber Like App | Ultimate ‘Uber Clone Script’ Bible

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 started gaining ground : "On-demand services", "hyperlocal delivery" etc. People caught on to the Uber model, improvised and built businesses around them.

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 Uber Clone 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.

Build An Uber Like App | Ultimate ‘Uber Clone Script’ Bible
Databases

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 low latency operations like booking dispatch.

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.

Build An Uber Like App | Ultimate ‘Uber Clone Script’ Bible
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 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 should also be used for log management system.

How to develop a fast, low resource consuming, highly performant and scalable backend for Uber like app? / Which 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 high data manipulation/computation/crunching operations due to its standard library being large and comprehensive.

How to get real time analytics?

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 applicaiton based on surges in the incoming traffic.

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 uber like app?

Amazon Lambda (with Amazon API Gateway) or Firebase Cloud functions.

Which payment gateway should I use?

For the MENA region : Payfort

Europe/USA - Stripe/brainstree.

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 & 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.

Read This | How are security features implemented in Uber like apps

Build An Uber Like App | Ultimate ‘Uber Clone Script’ Bible
Security

How to make the Uber clone app secure?

JWS(JSON Web Signing)+JWE(Json Web Encryption)+JWK(JSON Web Key ) = JOSE( Javascript Object Signing and Encryption ) for securing all the communication with the api backend using JWT.All the data exchange between pruduct components like apps or backend should be over HTTPS and encrypted with SSL/TLS.

How to restrict/rate limit the malicious traffic using an API gateway? Should I use a commercial or an 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 cemercially available enterprise api gateway in 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.

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 pub-sub 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).

Comercial pub-sub systems- PubNub or Google cloud pub-sub, Ably.

Example usage- Real time driver location tracking while on a booking etc.

How can I enable realtime chat between driver and customer within app/without leaving app/inapp in Uber Clone?

Firebase Realtime Database- For implementing realtime chat between driver and customers.

How can I securely and cost effectively store user media (e.g. license documents)?

Firebase Storage or Amazon S3 Storage are the most popular enterpeise grade cloud storage at very competitive prices. They can be used for storing and sharing user-generated content like images, 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 crashlytics/Fabric as the primary crash reporter for the apps.

Build An Uber Like App | Ultimate ‘Uber Clone Script’ Bible
Notifications

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.

Build An Uber Like App | Ultimate ‘Uber Clone Script’ Bible
Twilio Services

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?

Twilio Voice sdk or opensource solutions based on WebRTC(AppRTC or Janus) based in-app audio or video call between driver and customer. (Open Source)

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 switch 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 a add ticket management system in Uber like app 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 custoemrs 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.

Build An Uber Like App | Ultimate ‘Uber Clone Script’ Bible

Back to Featured Articles on Logo Paperblog