This is a basic KMP demo project consisting of an Android and an iOS app. The apps display the list of SpaceX rocket launches.
The app is quite basic in terms of functionality. It has a single page that displays the list of SpaceX rocket launches. It reads the data from a REST API if Internet is connected, otherwise it loads the data from the database.
The most important goal for me was to get more familiar with KMP by building a KMP app from scratch.
The second goal was to have a kind of blueprint for a typical KMP app that is implemented in a clean and scalable way using the latest technologies and best practices.
androidApp
: an Android application module containing the UI part of the Android app.iosApp
: an iOS application that contains the UI part of the iOS app.shared
: a KMP module that contains the shared code between the Android and iOS apps.
Everything except the UI implementation is shared between the Android and iOS apps.
- Kotlin
- Swift
- Jetpack Compose
- SwiftUI
- Coroutines + Flows
- Ktor Client
- SqlDelight
- Koin
- Coil
- Kermit
- KMM ViewModel
The overall architecture of the app is Clean architecture and MVVM is used for the presentation layer.