πŸš† From Web to Cross-Platform: My Journey with MRT Buddy

March 11, 2025

Back in November 2024, I had the opportunity to contribute to MRT Buddy, an open-source project designed to improve the metro rail experience in Dhaka. It was an exciting journey where I worked on both the web and mobile app, gaining hands-on experience in multi-platform development.

My Contributions:

πŸ”Ή Web Development: Designed and built a high-performance Next.js website for MRT Buddy, ensuring a smooth user experience.

πŸ”Ή Kotlin App Development: Contributed to the MRT Buddy app, which was originally built in Kotlin for Android. At that time, the focus was on Android-only, but discussions began on how to expand to iOS.

πŸ”Ή Flutter Exploration: To support iOS, I initially started implementing the app in Flutter, making significant progress. However, after deeper discussions, the decision was made to go with Kotlin Multiplatform (KMP) for a unified codebase.

πŸ”Ή Transition Decision: By the time the KMP decision was finalized, I had already completed a substantial portion of the Flutter version. Since translating all that work to KMP would take considerable time, I ultimately closed my Flutter pull request and aligned with the new KMP direction.

Key Takeaways from This Experience:

βœ… Learned the challenges and trade-offs in cross-platform development decisions.

βœ… Gained deeper expertise in Kotlin and Kotlin Multiplatform (KMP).

βœ… Experienced real-world open-source collaboration and decision-making processes.

Mistakes & Challenges I Faced πŸ€¦β€β™‚οΈ

❌ At one point, I mistakenly added Python inside Kotlin (yeah, I don't know what I was thinking!).

❌ I used a specific version of Jetpack Compose that caused compatibility issues.

❌ I even downgraded the Kotlin version, thinking it would fix some problems, but it only created more!

❌ Constantly switching between Kotlin, Flutter, and KMP wasted a lot of development time.

What I Learned from These Mistakes βœ…

πŸ”Ή Making mistakes is part of the learning processβ€”what matters is how you fix them.

πŸ”Ή Understanding why a decision is made in a project is just as important as writing code.

πŸ”Ή Proper version management and dependency handling are critical in large-scale projects.

πŸ”Ή Sometimes, you have to let go of your work (like my Flutter implementation) to align with a better long-term solution.

A huge shoutout to Ani Adhikary Bhai for his incredible mentorship and inspiration throughout this journey! Also, thanks to Rahat Shovo Bhai, Hasan Masum Bhai, and Kazi MMT Bhai for their support and insights. πŸš€

Working on MRT Buddy was a fantastic learning experience, and it reinforced my passion for open-source projects and scalable mobile app development. Looking forward to contributing to more impactful projects in the future!

Check out the project here:

πŸ”— https://lnkd.in/gczjT9_t