ZimTaxi Engineering

My recent articles were about developing a basic skeleton of a ride hailing mobile application using react-native. There is such a huge learning curve especially if you decide to do this solo. ZimTaxi is a ride sharing mobile application I recently developed and launched in Zimbabwe. The aim was to make the UI less complex while handing the complicated staff behind the scenes and also allowing the app to scale easily in the future.

 

ZimTaxi’s Engineering challenges

The application is meant to serve users in realtime. There is no room for setbacks and downtime. Driver’s take ZimTaxi as their primary/secondary source of income. This means availability and reliability are the main points of focus when developing the app. Updates or changes to the code should not break previous builds rendering them unusable.

 

ZimTaxi’s Tech Stack

Backend

Firebase is responsible for handling all the “real-time” aspects of ZimTaxi.  If you have used WebSockets before you should have an idea of what is

Firebase is responsible for managing all of the “real-time” aspects of our platform. For those familiar with WebSockets, Firebase is basically a managed WebSockets backend with  NoSQL database built-in. With Firebase ZimTaxi does not need  a middle API layer to interact with the database. Updates made on the database are listened to in realtime on the client apps.

In some cases it might not be a good idea to execute some tasks from within client apps, for example looping through an array of nearby drivers and sending them ride requests based on their availability. For tasks such as these I decided to use Firebase cloud functions. Processing payments is another task you cant really do on the client, luckly Firebase cloud functions allows us to do this with stripe.

Front-end /client applications
  • ZimTaxi – Allows the riders to select pick-up and drop-off locations and book a ride or request for a package delivery.
  • ZimTaxi Driver – Basically allows drivers to accept, cancel and end ride requests.

Both client applications are built using react-native. Which means instead of having four code bases, I only have two since react-native is “build once and run everywhere”. React Native is a JavaScript framework for writing real, natively rendering mobile applications for iOS and Android in javascript.  However this doesn’t mean you will never touch native code. Complex features might require you to dig into native code and create Native-modules.

 

 

Categories: Text

Leave a Reply

Your email address will not be published. Required fields are marked *