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 gained ground : “On-demand services”, “hyperlocal delivery” etc. People caught on to the Uber model, improvised and built businesses around it.

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.

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.

Android apps written in java with strict adherence to MVP architecture and support of the latest version — Android Pie.

Ios apps written in swift with strict adherence to MVVM architecture and support of latest version- iOS 13.

WebAdmin- Written in Php or angular js with strict adherence to MVC architecture.

Databases

Use NOSQL — Mongo or Cassandra

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.

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.

Redis for efficient geospatial queries.

Queuing & Messaging Systems

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.

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.

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.

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.

We can go with either way as each comes with its own set of advantages and disadvantages .

Serverless architecture advantages — 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.

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

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.

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.

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.

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.

gRPC- For inter microservice communication.

Security

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 product components like apps or backend should be over HTTPS and encrypted with SSL/TLS.

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.

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.

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.

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

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.

Firebase/Fabric crashlytics as the primary crash reporter for the apps.

Notifications

Firebase cloud messaging to reliably deliver push notifications to multiple devices in one shot.

Twilio Services

Twilio SMS as the sms platform for OTP number verification on user or driver signup.

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.

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.

Google Directions API for realtime path plot from pickup to drop location and ETA (estimated time of arrival) estimation.

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.

Originally published at https://blog.appscrip.com on January 9, 2020.

Writer | Poet | Romantic | Spiritually Absorbed | Outdoorsy | Talkative | Lust for Life