{"id":50718521,"url":"https://github.com/overpas/sample-mvikotlin-exception","last_synced_at":"2026-06-09T21:04:02.201Z","repository":{"id":242380456,"uuid":"805411948","full_name":"overpas/sample-mvikotlin-exception","owner":"overpas","description":null,"archived":false,"fork":false,"pushed_at":"2024-06-02T16:14:12.000Z","size":108,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-03T17:52:10.096Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/overpas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-24T14:13:18.000Z","updated_at":"2024-06-02T16:14:15.000Z","dependencies_parsed_at":"2024-06-02T17:43:04.571Z","dependency_job_id":"0ae97b08-ec9a-4cf6-b412-4f53dc050c23","html_url":"https://github.com/overpas/sample-mvikotlin-exception","commit_stats":null,"previous_names":["overpas/sample-mvikotlin-exception"],"tags_count":0,"template":false,"template_full_name":"arkivanov/decompose-multiplatform-template","purl":"pkg:github/overpas/sample-mvikotlin-exception","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overpas%2Fsample-mvikotlin-exception","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overpas%2Fsample-mvikotlin-exception/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overpas%2Fsample-mvikotlin-exception/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overpas%2Fsample-mvikotlin-exception/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/overpas","download_url":"https://codeload.github.com/overpas/sample-mvikotlin-exception/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overpas%2Fsample-mvikotlin-exception/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34125332,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-09T21:04:01.088Z","updated_at":"2026-06-09T21:04:02.186Z","avatar_url":"https://github.com/overpas.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Decompose Multiplatform Template\n\nThis is a Kotlin Multiplatform project template with [Decompose](https://github.com/arkivanov/decompose) configured.\n\n\u003e **Note**\n\u003e Due to the  [current state](https://github.com/arkivanov/Decompose/issues/74) of iOS support this template uses experimental versions of Decompose.\n\u003e If you have any issues, please report them on GitHub.\n\n## About this Project\n\nYou can use this template to start developing your own\n[Decompose](https://github.com/arkivanov/Decompose#readme) application targeting desktop,\nAndroid, and iOS, either by using Compose as shared UI across all platforms, or by using\nplatform-specific UI like SwiftUI and Android XML.\n\nThe instructions below provide you additional information on how to work with this template and add\nfeatures like navigation, state preservation and more.\n\nThe result will be a [Kotlin Multiplatform](https://kotlinlang.org/docs/multiplatform.html) project\nthat uses the Decompose framework for common logic with the UI framework(s) of your choice and the\nfeatures you need.\n\nThis project was inspired by the [sample project of Decompose](https://github.com/arkivanov/Decompose/tree/master/sample)\nand the [Compose Multiplatform Template](https://github.com/JetBrains/compose-multiplatform-template).\n\n## Getting Started\n\nIn order to work with this template you need the following tools:\n* [Android Studio](https://developer.android.com/studio)\n* (Optional) The [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile)\n\nAdditionally, if you plan to write and run iOS-specific code on simulated or real devices, you need\nthe following:\n\n* A machine running a recent version of macOS\n* [Xcode](https://apps.apple.com/us/app/xcode/id497799835)\n\nTools like [KDoctor](https://github.com/Kotlin/kdoctor) can assist you during the installation\nprocess.\n\n## Project Structure\n\nThe project consists of multiple modules:\n\n### `shared`\n\nThis is a Kotlin module that contains the shared logic of all platforms. This also includes the\nDecompose implementation. \n\n### `compose-ui`\n\nThis is a Kotlin module that contains the UI written with Compose Multiplatform that is shared\nacross all platforms.\n\nIt depends on the `shared` module as it uses the component interfaces from Decompose.\n\n### `app-desktop`\n\nThis is a Kotlin module that contains and builds the desktop (JVM) application.\n\nIt makes use of the shared code from the modules `shared` and `compose-ui`.\n\n### `app-android`\n\nThis is a Kotlin module that contains and builds the Android mobile application.\n\nIt makes use of the shared code from the modules `shared` and `compose-ui`.\n\n### `app-ios-compose`\n\nThis is an Xcode project that builds an iOS mobile application with Compose UI.\n\nIt makes use of the shared code from the modules `shared` and `compose-ui`.\n\n### `app-ios-swift`\n\nThis is an Xcode project that builds an iOS mobile application with SwiftUI.\n\nThis module uses only the `shared` module and SwiftUI for its UI (instead of Compose).\n\n\u003e **Note**\n\u003e In practice you normally have either `app-ios-compose` or `app-ios-swift`.\n\u003e \n\u003e Therefore, do not hesitate to merge them or delete one of the two. \n\n## Running the project\n\nDepending on the platform you want to build for and run the project on, different gradle tasks may\nbe used.\n\n### For Android\n\nWhen using Android Studio you can simply select `app-android` from the run configurations and run\nthe app.\n\n### For Desktop\n\n```bash\n./gradlew :app-desktop:run\n```\n\n### For iOS (Compose)\n\nIf you have installed the Kotlin Multiplatform Mobile plugin you can simply select `app-ios-compose`\nfrom the run configurations and run the app.\n\nAlternatively you can open `app-ios-compose/app-ios-compose.xcodeproj` in XCode and launch the project\nfrom there.\n\n### For iOS (Swift)\n\nIf you have installed the Kotlin Multiplatform Mobile plugin you can simply select `app-ios-swift`\nfrom the run configurations and run the app.\n\nAlternatively you can open `app-ios-swift/app-ios-swift.xcodeproj` in XCode and launch the project\nfrom there.\n\n## Further Reading\n\nWe encourage you to explore Decompose's features further and try adding them into your project:\n\n* [Add basic navigation with child stack(s) to your project](https://arkivanov.github.io/Decompose/navigation/stack/overview/)\n* [Add child slots for loading one child at a time, or none](https://arkivanov.github.io/Decompose/navigation/slot/overview/)\n* [Add back button handlers for intercepting back button presses](https://arkivanov.github.io/Decompose/component/back-button/)\n\nYou can also have a look at various integrations, including:\n* [State preservation with Essenty and Parcelize]() _(not available yet)_\n* [Integration of MVIKotlin for sharing code using MVI pattern]() _(not available yet)_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverpas%2Fsample-mvikotlin-exception","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foverpas%2Fsample-mvikotlin-exception","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverpas%2Fsample-mvikotlin-exception/lists"}