You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
An example of Kotlin Multiplatform todo app with shared Jetpack Compose UI.
|
|
|
|
|
|
|
|
Supported targets: `Android` and `JVM`.
|
|
|
|
|
|
|
|
Libraries used:
|
|
|
|
- Jetpack Compose - shared UI
|
|
|
|
- [Decompose](https://github.com/arkivanov/Decompose) - navigation and lifecycle
|
|
|
|
- [MVIKotlin](https://github.com/arkivanov/MVIKotlin) - presentation and business logic
|
|
|
|
- [Reaktive](https://github.com/badoo/Reaktive) - background processing and data transformation
|
|
|
|
- [SQLDelight](https://github.com/cashapp/sqldelight) - data storage
|
|
|
|
|
|
|
|
There are multiple common modules:
|
|
|
|
- `utils` - just some useful helpers
|
|
|
|
- `database` - SQLDelight database definition
|
|
|
|
- `main` - displays a list of todo items and a text field
|
|
|
|
- `edit` - accepts an item id and allows editing
|
|
|
|
- `root` - navigates between `main` and `edit` screens
|
|
|
|
|
|
|
|
The `root` module is integrated into both Android and Desktop apps.
|
|
|
|
|
|
|
|
Features:
|
|
|
|
- 99% of the code is shared: data, business logic, presentation, navigation and UI
|
|
|
|
- View state is preserved when navigating between screens, Android configuration change, etc.
|
|
|
|
- Model-View-Intent (aka MVI) architectural pattern
|
|
|
|
|
|
|
|
To run the desktop application execute the following command: `./gradlew desktop:run`.
|
|
|
|
|
|
|
|
To run the Android application you will need to open the project in Intellij IDEA or Android Studio and run "android" configuration.
|