diff --git a/examples/todoapp/README.md b/examples/todoapp/README.md index 4dbef1e6ad..93e6e3124b 100755 --- a/examples/todoapp/README.md +++ b/examples/todoapp/README.md @@ -1,4 +1,28 @@ -An example of todo app based on Jetpack Compose UI library (desktop and android) and Decompose navigation library. +An example of Kotlin Multiplatform todo app with shared Jetpack Compose UI. -To run desktop application execute in terminal: ./gradlew desktop:run -To run android application you will need to open project in Intellij IDEA or Android Studio and run "android" configuration +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.