{"id":25608173,"url":"https://github.com/yjyoon-dev/kmp-multi-module-template","last_synced_at":"2026-06-17T18:34:39.209Z","repository":{"id":277703607,"uuid":"933245860","full_name":"yjyoon-dev/kmp-multi-module-template","owner":"yjyoon-dev","description":"Kotlin Multiplatform multi-module template for targeting Android \u0026 iOS","archived":false,"fork":false,"pushed_at":"2025-03-30T13:23:59.000Z","size":228,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T14:24:46.497Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yjyoon-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-02-15T14:03:50.000Z","updated_at":"2025-03-30T13:24:03.000Z","dependencies_parsed_at":"2025-03-22T14:34:00.814Z","dependency_job_id":null,"html_url":"https://github.com/yjyoon-dev/kmp-multi-module-template","commit_stats":null,"previous_names":["yjyoon-dev/kmp-multi-modules-template"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/yjyoon-dev/kmp-multi-module-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjyoon-dev%2Fkmp-multi-module-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjyoon-dev%2Fkmp-multi-module-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjyoon-dev%2Fkmp-multi-module-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjyoon-dev%2Fkmp-multi-module-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yjyoon-dev","download_url":"https://codeload.github.com/yjyoon-dev/kmp-multi-module-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjyoon-dev%2Fkmp-multi-module-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34461617,"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-17T02:00:05.408Z","response_time":127,"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":"2025-02-21T20:19:05.790Z","updated_at":"2026-06-17T18:34:39.177Z","avatar_url":"https://github.com/yjyoon-dev.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Kotlin Multiplatform multi-module template for Android/iOS\n\n\u003cp\u003e\n  \u003cimg src=\"https://img.shields.io/badge/kotlin-multiplatform-A97BFF.svg\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/compose-multiplatform-5675DF.svg\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-android-green.svg\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-iOS-black.svg\"/\u003e\n\u003c/p\u003e\n\nThis template is based on [Kotlin Multiplatform](https://kotlinlang.org/docs/multiplatform.html) and [Compose Multiplatform](https://www.jetbrains.com/compose-multiplatform/) for developing both Andorid and iOS apps.\nIt is modularized into several *feature* modules and *core* modules, and **new modules can be easily added** using already defined Custom Gradle Plugins and Version Catalog.\nIn addition, **essential libraries** that support multi-platforms such as [coil](https://coil-kt.github.io/coil/), [ktor](https://ktor.io/), and [koin](https://insert-koin.io/) have been added, and **awesome lint tools** such as [spotless](https://github.com/diffplug/spotless) and [detekt](https://detekt.dev/) have already been applied in optimal configuration.\n**Now let’s create a KMP multi-module project quickly and easily!**\n\n\u003cbr\u003e\n\n## Support\n- Kotlin 2.1.10\n- Compose Multiplatform 1.7.1\n- AGP 8.8.0\n\n\u003cbr\u003e\n\n## Multi Module\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"720\" src=\"https://github.com/user-attachments/assets/e01f0ac2-befc-40ba-a30a-5d4cb3c15ebe\" /\u003e\n\u003c/p\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003cstrong\u003eName\u003c/strong\u003e\n   \u003c/td\u003e\n   \u003ctd\u003e\u003cstrong\u003eResponsibilities\u003c/strong\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003eapp\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eBrings everything together required for the app to function correctly. This includes UI scaffolding and navigation. \n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003efeature:main\u003c/code\u003e\u003cbr\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eFunctionality associated with a specific feature or user journey. Typically contains UI components and ViewModels which read data from other modules.\u003cbr\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecore:data\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eFetching app data from multiple sources, shared by different features.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecore:designsystem\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eDesign system which includes Core UI components such as customized Material 3 components. \n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecore:ui\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eComposite UI components and resources used by feature modules. Unlike the \u003ccode\u003edesignsystem\u003c/code\u003e module, it is dependent on the data layer since it renders models. \n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecore:common\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eCommon classes shared between modules.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecore:network\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eMaking network requests and handling responses from a remote data source.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecore:datastore\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eStoring persistent data using DataStore.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecore:database\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eLocal database storage using Room.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecore:model\u003c/code\u003e\n   \u003c/td\u003e\n   \u003ctd\u003eModel classes used throughout the app.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003e Now you can add feature modules as you want!\n\n\u003cbr\u003e\n\n## Dependencies\n\n### Kotlin\n- kotlinx-coroutines\n- kotlinx-datetime\n- kotlinx-serialization\n\n### Navigation\n- navigation-compose\n\n### Data\n- [Okio](https://square.github.io/okio/)\n- DataStore\n- SQLite\n- Room\n- [Ktor](https://ktor.io/)\n- [Ktorfit](https://foso.github.io/Ktorfit/)\n\n### DI\n- [Koin](https://insert-koin.io/)\n\n### Image\n- [Coil](https://coil-kt.github.io/coil/)\n\n### Lint\n- [Spotless](https://github.com/diffplug/spotless)\n- [Ktlint](https://github.com/pinterest/ktlint)\n- [detekt](https://detekt.dev/)\n- [twitter-compose-rule](https://github.com/twitter/compose-rules)\n\n\u003cbr\u003e\n\n## How to use\n1. First, modify `rootProject.name` on root `settings.gradle.kts`.\n2. Replace all `dev.yjyoon.template` string to your package name. (Use `cmd(ctrl)`+`shift`+`R` on Android Studio)\n3. Replace all `template` string to your project name.\n4. Rename all package directories to your package name. (You can change all package directory names at once through Android Studio)\n5. Input your name to license header on `SpotlessPlugin.kt` \n6. Finally, `clean` your project.\n\n### Gradle tasks\n```java\n// format your codes with ktlint rules\n./gradlew spotlessCheck\n./gradlew spotlessApply\n\n// run code static analysis with twitter compose rules\n./gradlew detekt\n\n// generate project dependency graph (need to install graphviz)\n./gradlew projectDependencyGraph\n```\n\n\u003cbr\u003e\n\n## References\nThanks to all the projects that helped create this template!\n- https://github.com/android/nowinandroid\n- https://github.com/DroidKaigi/conference-app-2024\n- https://github.com/droidknights/DroidKnightsApp\n- https://github.com/serbelga/Todometer-KMP\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyjyoon-dev%2Fkmp-multi-module-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyjyoon-dev%2Fkmp-multi-module-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyjyoon-dev%2Fkmp-multi-module-template/lists"}