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