Building Scout

Journeying into KMM, Jetpack Compose and Swift UI

Introduction

For a long time now, I've been very interested in cross platform frameworks that provide the flexibility of creating a single codebase that can target multiple platforms. To that end I've ended up doing so many different projects involving different frameworks with and have had varying levels of success with them.

With having spent time in developing throw away projects in Flutter and React Native I've always been amazed by how good they are UI code sharing but almost always I've been disappointed some of their drawbacks when it comes to writing maintainable code that could go into production. I would like to point out that this is most likely due to my lack of knowledge in how to wield these frameworks to their full potential but nevertheless my success with these frameworks has been fairly limited.

In comes JetBrains, with Kotlin Multiplatform Mobile and my interest is piqued. The fact that I could use my experience of writing Kotlin for Android apps and write some shared codebase to be cross compiled to iOS and be able to build an iOS app on top of that sounded amazing to me and I dove head first into my current side project Scout.

PHOTO-2021-05-01-17-35-18.jpg

Building Scout - Why?

Scout is a cross platform application that is capable of letting it's users browse through information about newly release video games and be able to curate lists based on their interests such as "Game's I'd Like to Buy", "Game's I waiting to be released" etc.

My initial purpose to build scout was a means to learn how one would go about setting up a KMM project and then do a throw away application on top of it that would allow the user to get some data through a network fetch and present it to the user. In order to make the app interesting I chose to go with the IGDB api as it was something I had worked with before.

As I have spent time building out Scout, I've started to enjoy building something that could potentially be useful to some people in the future . To that end as it stands right now, my eventual goal for Scout is to launch the app on Google's Play Store and the Apple App Store by the end of this year with a MVP that is capable of sorting through game data and allowing it's users to curate basic lists based on that data.

Having said that some of the other goals I have for Scout are follows:

  • Learn about KMM cross platform development and build experience on how to structure the code in such projects.
  • Learn more about how UI's are built in a composable fashion (based on what I've learned so far it's quite different from the old xml based approach)
  • Use Scout as a way to teach myself iOS and Swift.
  • Research viability of KMM and Jetpack Compose to deliver a production ready albeit small scale application to the respective app stores.

Current State

Currently both the iOS and Android apps have some basic functionality built into them. Both apps can authenticate themselves, allow users to select their genre preferences along with the systems they own. The apps will then provide the user with a curated list of games based on those selections and the user can dive into more detail for each game along with viewing screenshots and videos.

Sufficed to say that I will be adding more features in the future and refining the process as we go along. Till then you can follow the project on my Github and leave me suggestions on what you would like me to build out as features in the issues.