content-image

01 Challenge

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-

  • Mobile apps which work on Android and iOS with consistent UI/UX in both the platforms. We suggested Flutter for this because we believe that Flutter is meant to build such cross-platform applications in a faster way.
  • Two apps on each platform- one for customers and the other for chauffeurs. While the customer app needs to be good on UI and UX, the app for chauffeurs needs to be functional and easy to use.
  • An extensive backend system where they can manage every aspect of their business like accounting, customers, loyalty, offers, fleet, staff and so on. Since they have a large team, they also wanted multiple roles for this system.
  • An algorithm built to facilitate automated, faster and more efficient taxi booking for both intercity and intracity.
content-image

02 Solution

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.

content-image

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.

Technologies Used
flutter development laravel development ios app development android app development using firbase with flutter figma design development using vuejs for frontend development using redis for caching using postgresql database
content-image

03 Effect

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.

using vuejs for forntend development

10000+

Ride completed on the app

using vuejs for forntend development

4.5 out of 5

Average rating on all platforms

using vuejs for forntend development

10000+

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.

using vuejs for forntend development
Ranjeet K., Product Owner, CabbyLal

Have an idea? Develop it with us