Xapo Bank app
My work as a Senior Android Engineer at Xapo Bank, where my primary role was to maintain and further develop our clients’ experience with the application. The app allows users to spend their money, earn interest, and invest in different assets such as stocks and cryptocurrencies.
One of my main tasks was collaborating closely with cross-functional teams, initially as part of the payments team, to ensure a smooth user experience for our clients. I will share some of the key technologies, strategies, and tools that we used to make this happen.
Introducing Kotlin Multiplatform (KMP)
At Xapo Bank, we believed in leveraging cutting-edge technologies to stay ahead in the competitive world of mobile banking applications. One such technology was Kotlin Multiplatform (KMP), which allows developers to share code across different platforms without sacrificing performance or user experience.
I was responsible for introducing and implementing KMP within our organization, starting with its use as a replacement for the network communication layer. At first, both the platform-specific implementation and KMP solutions coexisted side by side. Gradually, every team started adopting KMP in their respective modules, initially only in new features but eventually replacing legacy code too. This led to significant improvements in our development process, as sharing code between platforms became a reality.
Developing the Investment Feature
Another major accomplishment during my time at Xapo was leading the architecture design and implementation of the codebase for the investment feature. As part of this, I collaborated with other teams and developers within our feature team to ensure adherence to best practices and standards while maintaining high-quality code, given the extreme thigh deadline of the MVP.
This new feature allowed users to invest in multiple different assets, including stocks and cryptocurrencies. The UI, presentation logic and some of the shared KMP code were designed to be reusable between the different vendors, making it easy to add support for new asset types without affecting the user experience. This approach helped keep our application consistent across various parts of the app while maintaining high performance levels. This architectural investment yield it’s profit when we had to add cryptocurrency trading after stocks.
Tools and Technologies Used
Throughout my journey, I utilized several tools and technologies that played a crucial role in delivering a seamless user experience:
Compose/Swift UI - Flow - Coroutine - Room/SQLdelight - Dagger/Koin - Ktor - Firebase - Instabug
Kotlin Multiplatform (KMP) for sharing code between Android and iOS platforms, the KMP part of the application was developed as an internal SDK to hold the shared layers without exposing too much of its inner structure to be able to test all the different modules independently.
Utilizing Instabug for analytics, crash reporting, and identifying issues that affected application performance and user experience
Using Firebase for real-time changes, A/B testing, and remote configuration to optimize the app’s features for users.