Building taxi booking app using Flutter for Android and iOS
Our client approached us with a unique and innovative taxi booking app idea for their taxi business. They run their own fleet of cabs and wanted a way to digitize their bookings, finances, fleet maintenance and staff management. They were looking for a cross platform app development company who would not only build the app for Android and iOS from the ground up but also deliver backend systems like finance, accounting, fleet and staff management. The system requirements were-
Android and iOS apps using Flutter, Web-based backend system, UX/UI Design
The ultimate goal of this project was to facilitate extremely fast booking while providing a beautiful user interface and an amazing user experience to the users. To accomplish this, we decided to start with designing the app. Using Figma, we provided all the necessary screens along with a prototype to the client. This made sure that the client understood the overall app and it’s flow as a user. Figma made it very easy for us to collect feedback from some of the actual users in the prototype stage itself.
Next, we started the development of REST APIs using Laravel and PostgreSQL/Redis. This REST API was created in the form of headless architecture so that both Admin panel and the mobile apps would consume the same APIs without worrying about the implementation. This also made sure that our client was free to implement any other mobile app/web-app for this project without making any changes in the finalized backend system.
Before this system was built, any booking was required to be done manually i.e. the backend staff was required to be available to accept/reject the bookings as per the availability of the chauffeurs. Our solution has a built in algorithm to automatically assign the next available chauffeur. It is based on multiple parameters like min 2 hours duration between two consecutive rides of a chauffeur, current driver status, driver leave status, car availability, current booking extensions etc.
We also implemented Flutter push notifications using Firebase. For any change in the booking status, the customers were required to receive push notifications in the app, an SMS and an Email notification. To achieve this, we implemented background queues in Laravel using Redis as a queue manager. The queue would take care of sending the required type of notification based on the action taken on the booking. Moving such an event handling system to the background made sure that the system was able to handle multiple requests at the same time without blocking any other requests. We were also able to utilize the CPU and Memory in a much more efficient way.
After creating the REST APIs, the next task was to create the mobile app using Flutter. We started by converting the Figma designs to Flutter widgets making sure to reuse as many widgets as possible. We used Provider with ChangeNotifier to implement MVVM architecture. We’ve been quite satisfied with this architectural style of development and have used it in complex multiple projects while keeping the code complexity to a minimum. The Flutter app also makes full use of the GPS to get real-time location of the user throughout the booking lifecycle.
While the Flutter team was building the Flutter app, the backend team started building the admin panel in parallel. For the admin panel, we used VueJS with Nuxt framework for quick scaffolding and development. We built a Single-page application using Nuxt for a smooth mobile application like user experience of the admin panel.
For payments, we implemented the RazorPay payment gateway which has a dedicated Flutter SDK. We also had to make sure that the customers are able to pay offline using cash, for this we implemented multiple checks on both driver and customer ends.
The application got an amazing response on release. Because of the consistent UI and UX in both Android and iOS, the application particularly got very positive feedback from the users using apps on both the platforms.
With quick booking options for both intercity and intracity travel, our client saw manifold growth in their operations. Their target of achieving digitization of their taxi booking business has been achieved and is growing further as we speak.
Thanks to the automated booking options, the client’s team is now focusing more on growing the business further in terms of operations instead of manually taking care of each booking. The finance module in turn, allowed the client to optimize their spendings across their fleets resulting in greater savings.
Ride completed on the app
Average rating on all platforms
Downloads till now
CitrusLeaf Software helped us get our taxi business on phones in a very short deadline. It's amazing how they came up with beautiful UI and all the needed analysis to just fit the app. They are on time and really good at their work.