Kmp-Starter-Template

Multi-module, production-ready starter with clean architecture, DI, analytics, in-app purchases, remote config, Room/DataStore, modular navigation, notifications and logging—streamlines app scaffolding and setup.

Android JVMKotlin/Native
GitHub stars146
AuthorsDevAtrii
Dependents0
LicenseOther
Creation dateabout 1 year ago

Last activity4 days ago
Latest release0.5.5 (4 days ago)

KMP Starter Template Logo

KMP Starter Template

Project-agnostic, production-ready Kotlin Multiplatform starter for Android & iOS.

Read Documentation


Overview

ChatGPT Image May 5, 2026, 06_24_13 PM

KMP Starter Template is a multi-module boilerplate built with:

  • Clean Architecture (data / domain / presentation)
  • Compose Multiplatform
  • Koin (DI)
  • RevenueCat (In-App Purchases)
  • Mixpanel (Analytics)
  • Remote Config
  • Room Database
  • DataStore
  • Modular Navigation
  • Notifications
  • Logging
  • Platform utilities

It removes the repetitive setup work (analytics, purchases, remote config, etc.) so you can focus on building your app.


Architecture

Each feature is isolated in its own module:

features/
  analytics/
  core/
  database/
  navigation/
  purchases/
  remoteconfig/
  your-feature/

Every feature follows:

data/
domain/
presentation/

You can easily swap implementations (e.g., replace Mixpanel with PostHog) by changing the data layer.


Getting Started

Start with the CLI@devatrii/starter . It scaffolds a full project under your app name and package, rewires modules and namespaces for you, and typically saves 2–3 hours of manual rename and setup work.

The CLI is in alpha — it generates projects successfully, but expect rough edges. If you hit an issue, please report it on GitHub Issues.

Requirements: Node.js 18+, Java 17

# Install globally
npm install -g @devatrii/starter

# Interactive create (prompts for name, package, modules, etc.)
starter create

# Or with flags
starter create \
  --name MyApp \
  --package com.example.myapp \
  --feature notes \
  --modules all

# Init starter.json in an existing project
starter init

# Add a starter module to an existing project
starter include --module purchases

# Print CLI version
starter -v

Commands: create, init, include, version (-v / --version).

Open the generated project in Android Studio (KMP Plugin required). Open iosApp/iosApp.xcodeproj in Xcode to run on iOS.


Libraries

We are working to ship KMP Starter as published Maven libraries so existing projects can adopt modules incrementally (starter utilities, UI, and feature layers) without cloning the full template.

Artifacts are published under io.github.devatrii. They are not fully stable yet—APIs and module boundaries may change between releases.

Example libs.versions.toml for consumers:

[versions]
starter = "x.x.x"

[libraries]
# Starter
starter-core = { module = "io.github.devatrii:starter-core", version.ref = "starter" }
starter-utils = { module = "io.github.devatrii:starter-utils", version.ref = "starter" }
starter-native-bindings = { module = "io.github.devatrii:starter-native-bindings", version.ref = "starter" }
starter-ui-utils = { module = "io.github.devatrii:starter-ui-utils", version.ref = "starter" }
starter-ui-components = { module = "io.github.devatrii:starter-ui-components", version.ref = "starter" }
starter-ui-layouts = { module = "io.github.devatrii:starter-ui-layouts", version.ref = "starter" }

# Features
starter-feature-navigation = { module = "io.github.devatrii:feature-navigation", version.ref = "starter" }
starter-feature-analytics-data = { module = "io.github.devatrii:feature-analytics-data", version.ref = "starter" }
starter-feature-analytics-domain = { module = "io.github.devatrii:feature-analytics-domain", version.ref = "starter" }
starter-feature-core-data = { module = "io.github.devatrii:feature-core-data", version.ref = "starter" }
starter-feature-core-domain = { module = "io.github.devatrii:feature-core-domain", version.ref = "starter" }
starter-feature-core-presentation = { module = "io.github.devatrii:feature-core-presentation", version.ref = "starter" }
starter-feature-locale = { module = "io.github.devatrii:feature-locale", version.ref = "starter" }
starter-feature-remote-config-data = { module = "io.github.devatrii:feature-remote-config-data", version.ref = "starter" }
starter-feature-remote-config-domain = { module = "io.github.devatrii:feature-remote-config-domain", version.ref = "starter" }
starter-feature-remote-config-presentation = { module = "io.github.devatrii:feature-remote-config-presentation", version.ref = "starter" }
starter-feature-purchases-data = { module = "io.github.devatrii:feature-purchases-data", version.ref = "starter" }
starter-feature-purchases-domain = { module = "io.github.devatrii:feature-purchases-domain", version.ref = "starter" }
starter-feature-purchases-presentation = { module = "io.github.devatrii:feature-purchases-presentation", version.ref = "starter" }
starter-feature-notifications-core = { module = "io.github.devatrii:feature-notifications-core", version.ref = "starter" }
starter-feature-notifications-local = { module = "io.github.devatrii:feature-notifications-local", version.ref = "starter" }
starter-feature-notifications-push = { module = "io.github.devatrii:feature-notifications-push", version.ref = "starter" }

Example dependency:

implementation(libs.starter.core)
implementation(libs.starter.feature.purchases.presentation)

Catalog aliases use dots in Kotlin (starter-corelibs.starter.core). Adjust names to match your catalog if you prefer different aliases.


License & Usage

You are free to:

  • Use this template in personal or commercial projects
  • Modify it
  • Ship apps built with it

You are not allowed to:

  • Resell this template (partially or fully) as another boilerplate
  • Repackage and distribute it as a competing starter template (paid)

See the full license here: https://github.com/DevAtrii/Kmp-Starter-Template/blob/main/LICENSE


Read Documentation

Android JVMKotlin/Native
GitHub stars146
AuthorsDevAtrii
Dependents0
LicenseOther
Creation dateabout 1 year ago

Last activity4 days ago
Latest release0.5.5 (4 days ago)

KMP Starter Template Logo

KMP Starter Template

Project-agnostic, production-ready Kotlin Multiplatform starter for Android & iOS.

Read Documentation


Overview

ChatGPT Image May 5, 2026, 06_24_13 PM

KMP Starter Template is a multi-module boilerplate built with:

  • Clean Architecture (data / domain / presentation)
  • Compose Multiplatform
  • Koin (DI)
  • RevenueCat (In-App Purchases)
  • Mixpanel (Analytics)
  • Remote Config
  • Room Database
  • DataStore
  • Modular Navigation
  • Notifications
  • Logging
  • Platform utilities

It removes the repetitive setup work (analytics, purchases, remote config, etc.) so you can focus on building your app.


Architecture

Each feature is isolated in its own module:

features/
  analytics/
  core/
  database/
  navigation/
  purchases/
  remoteconfig/
  your-feature/

Every feature follows:

data/
domain/
presentation/

You can easily swap implementations (e.g., replace Mixpanel with PostHog) by changing the data layer.


Getting Started

Start with the CLI@devatrii/starter . It scaffolds a full project under your app name and package, rewires modules and namespaces for you, and typically saves 2–3 hours of manual rename and setup work.

The CLI is in alpha — it generates projects successfully, but expect rough edges. If you hit an issue, please report it on GitHub Issues.

Requirements: Node.js 18+, Java 17

# Install globally
npm install -g @devatrii/starter

# Interactive create (prompts for name, package, modules, etc.)
starter create

# Or with flags
starter create \
  --name MyApp \
  --package com.example.myapp \
  --feature notes \
  --modules all

# Init starter.json in an existing project
starter init

# Add a starter module to an existing project
starter include --module purchases

# Print CLI version
starter -v

Commands: create, init, include, version (-v / --version).

Open the generated project in Android Studio (KMP Plugin required). Open iosApp/iosApp.xcodeproj in Xcode to run on iOS.


Libraries

We are working to ship KMP Starter as published Maven libraries so existing projects can adopt modules incrementally (starter utilities, UI, and feature layers) without cloning the full template.

Artifacts are published under io.github.devatrii. They are not fully stable yet—APIs and module boundaries may change between releases.

Example libs.versions.toml for consumers:

[versions]
starter = "x.x.x"

[libraries]
# Starter
starter-core = { module = "io.github.devatrii:starter-core", version.ref = "starter" }
starter-utils = { module = "io.github.devatrii:starter-utils", version.ref = "starter" }
starter-native-bindings = { module = "io.github.devatrii:starter-native-bindings", version.ref = "starter" }
starter-ui-utils = { module = "io.github.devatrii:starter-ui-utils", version.ref = "starter" }
starter-ui-components = { module = "io.github.devatrii:starter-ui-components", version.ref = "starter" }
starter-ui-layouts = { module = "io.github.devatrii:starter-ui-layouts", version.ref = "starter" }

# Features
starter-feature-navigation = { module = "io.github.devatrii:feature-navigation", version.ref = "starter" }
starter-feature-analytics-data = { module = "io.github.devatrii:feature-analytics-data", version.ref = "starter" }
starter-feature-analytics-domain = { module = "io.github.devatrii:feature-analytics-domain", version.ref = "starter" }
starter-feature-core-data = { module = "io.github.devatrii:feature-core-data", version.ref = "starter" }
starter-feature-core-domain = { module = "io.github.devatrii:feature-core-domain", version.ref = "starter" }
starter-feature-core-presentation = { module = "io.github.devatrii:feature-core-presentation", version.ref = "starter" }
starter-feature-locale = { module = "io.github.devatrii:feature-locale", version.ref = "starter" }
starter-feature-remote-config-data = { module = "io.github.devatrii:feature-remote-config-data", version.ref = "starter" }
starter-feature-remote-config-domain = { module = "io.github.devatrii:feature-remote-config-domain", version.ref = "starter" }
starter-feature-remote-config-presentation = { module = "io.github.devatrii:feature-remote-config-presentation", version.ref = "starter" }
starter-feature-purchases-data = { module = "io.github.devatrii:feature-purchases-data", version.ref = "starter" }
starter-feature-purchases-domain = { module = "io.github.devatrii:feature-purchases-domain", version.ref = "starter" }
starter-feature-purchases-presentation = { module = "io.github.devatrii:feature-purchases-presentation", version.ref = "starter" }
starter-feature-notifications-core = { module = "io.github.devatrii:feature-notifications-core", version.ref = "starter" }
starter-feature-notifications-local = { module = "io.github.devatrii:feature-notifications-local", version.ref = "starter" }
starter-feature-notifications-push = { module = "io.github.devatrii:feature-notifications-push", version.ref = "starter" }

Example dependency:

implementation(libs.starter.core)
implementation(libs.starter.feature.purchases.presentation)

Catalog aliases use dots in Kotlin (starter-corelibs.starter.core). Adjust names to match your catalog if you prefer different aliases.


License & Usage

You are free to:

  • Use this template in personal or commercial projects
  • Modify it
  • Ship apps built with it

You are not allowed to:

  • Resell this template (partially or fully) as another boilerplate
  • Repackage and distribute it as a competing starter template (paid)

See the full license here: https://github.com/DevAtrii/Kmp-Starter-Template/blob/main/LICENSE


Read Documentation