An example of Kotlin Multiplatform app.
Supported targets: android, desktop (JVM).
- Common: Clean Architecture, Kotlin Multiplatform
- Asynchnonusity: Kotlin Coroutines
- Dependency Injection: Kodein
- UI pattern: MVI (MVIKotlin library)
- UI layouts: Jetbrains Compose, Android Compose
- Navigation: Decompose
- Local storage: SqlDelight
- HTTP client: Ktor
- Localization: Moko resources
- Unit testing: Kotest (framework, assertions), MockK
The app uses The Cat API.
To run the app you need an API key. Get a free API Key here: https://thecatapi.com/signup
Put in your home gradle.properties
:
catApiKey=YOUR_API_KEY
app:common
- shared code for the platform applications
app:android
- android application
app:desktop
- desktop (jvm) application
di
- contains reference to global DI (service locator)
resources
- contains string resources
utils:common_utils
- various utilities
utils:presentation_utils
- various presentation utilities
widgets:compose
- compose widgets
feature:breed:data
- local and remote repositories implementation
feature:breed:domain
- manages the remote and the local repositories
feature:breed_list:breed_list_domain
- prepares data for breed list
feature:breed_list:breed_list_ui
- UI for breed list (MVI and view)
feature:breed_info:breed_info_domain
- prepares data for breed info
feature:breed_info:breed_info_ui
- UI for breed info (MVI and view)
feature:root_screen:common
- root screen navigation logic
feature:root_screen:android
- contains MainActivity
feature:root_screen:desktop
- contains MainScreen composable (compose-jb)