The client is an eCommerce organisation established across 11 countries in Southeast Asia
Client had an existing legacy mobile app, which facilitated 2 million + transactions per day. There was an urgent need to add multiple new features to optimize the business flow and improve the efficiency of drivers. However, due to various technical constraints, no new features had been added / released on this app for almost a year.
The main challenges for the team were:
We started by identifying the key flows in the app and targeting business critical functionalities to ensure that re-architecting, and adding new features, can be done in parallel. This minimized the duplication of effort of managing 2 old and new flows.
Following the Agile approach, we split the problem into multiple smaller milestones and parallel tasks, which helped us provide frequent releases for the client.
We made the code easier to fix by breaking it down into smaller, manageable modules. The modules were categorized by feature, as well as by domain. This hybrid approach of modularizing the app helped teams work on the code independently and in parallel.
We refactored the code by implementing clean code and SOLID design principles, which made the app more robust and easily scalable.
We gradually migrated the codebase from Java to Kotlin, which is much more concise, and therefore, the language of choice for most modern Android apps.
We applied the latest Google architecture guidelines with the help of Jetpack libraries.
Adopting the Reactive Programming approach (RxJava) helped us perform asynchronous operations much faster, thereby improving the app's performance significantly.
By providing ample test coverage, we created a strong safety harness for the codebase and made it flexible to adapt to new change requests.
We ensured backward compatibility by testing the app across multiple devices & OS versions.
We helped design a more intuitive UX of the app, with much lesser navigation and very optimised interactions, so that the delivery boys could be on-boarded much faster and they could perform app operations more efficiently.
We added location tracking feature on the drivers' app to help them identify the fastest delivery routes.
Our robust solution ensured a seamless transition from Android version Nougat to Pie and helped reduce app crashes significantly.