This repository includes the Android app (androidApp) and the shared KMM module (shared) for the kellner.team App. The iOS app can be found here.
The shared module is published as an SPM package to the GitHub Package Registry. For this the KMMBridge tool is used.
For a guide to use a local version of the KMM module see KMMBridge local dev spm
./gradlew spmDevBuild
(must be run after each change in the KMM module)- Drag the whole KMM project folder (top level git folder) into the WaiterRobot project in Xcode
- Start programming :)
- When finished delete the KMM project folder in Xcode, make sure to select "Remove References"!!! (otherwise the whole KMM project will be deleted locally)
Production release can be created with ./gradlew androidApp:release
. This creates a tag in the
form of android/major.minor.patch
(e.g. android/1.0.0) and triggers the CI build. The version is
taken from the version.properties file. After the tag is pushed
the version will be automatically bumped to the next patch version.
The CI will then then automatically deployed the app to the internal
track on Google Play.
The app must then be promoted to production manually from there after testing. When the app is then
approved by Google publish the approved changes and remove the pre-release flag on GitHub Releases.
(see publishAndroidProd.yml)
It is also possible to release a specific version. Just add the
v
parameter to the command e.g../gradlew androidApp:release -Pv=3.0.2
. This will first bump the version to 3.0.2, then create a production release and then bump the version to the next patch version.
On each push to develop a lava (dev) build is triggered and published to internal
track of
the lava kellner.team
app on Google Play. A tag in the form
of android/major.minor.patch-lava-epochMinutes
(e.g. android/1.0.1-lava-27935730) is created.
(see publishAndroidLava.yml)
A release is triggered on each push to develop (only when the shared module changed). The CI then
builds the shared Xcode Framework (Swift Package) and uploads it to the GitHub Package registry.
A tag in the form of major.minor.patch
(e.g. 1.0.0) is created.
(see publishSharedSpm.yml)
The Android app directly depends on the shared version in the repository (gradle project dependency). -> Version is the same as the Android version itself. The iOS app depends on the released SPM package in the GitHub Package registry. -> Each iOS release depends on a specified shared version.
- Kotlin
- Kotlin Multiplatform (Mobile)
- KMMBridge
- Ktor Http client
- Content Negotiation Body serialization
- Client Auth Authentication (Bearer)
- Client Logging Logging
- Realm (Kotlin) Database
- Koin Dependency injection
- Kermit Logger
- Orbit MVI MVI implementation
- Moko MVVM shared viewModelScope
- KMM Resources shared localization
- KotlinX DateTime Multiplatform DateTime
- KotlinX Serialization (Json) JSON serialization
- BuildKonfig BuildConfig for Kotlin Multiplatform Projects
- Jetpack Compose Declarative UI
- Material Material UI
- Material Icons Material UI Icons (extended)
- Compose Destinations Typesafe navigation for Jetpack Compose
- Accompanist Permissions Helper for permission management in JetpackCompose
- Barcode-Scanning QR/Barcode scanner
- Gradle Play Publisher
- Kotlin/kmm-sample
- KaMPKit Collection of code and tools for getting started with KMP/KMM
- KMMBridge sample
- joreilly/PeopleInSpace Minimal KMP project using SwiftUI, Jetpack Compose, SQLDelight, Koin (also includes many other platforms)
- KMP library/tool collection 1
- KMP library/tool collection 2
- Koin for KMP
- Converting Kotlin Flow to Swift Combine Publisher