Kotlin-Multiplatform-SDK

Headless, plug-and-play SDK offering networking, auth, HTTP cache, offline queue, logging, telemetry and MVI contracts; modular feature modules, dependency registry, and three integration paths including full offline-first with host SQL.

Android
iOS
GitHub stars0
AuthorsNiteshKuk
Dependents0
Creation date5 months ago

Last activityabout 2 months ago
Latest release1.1.2 (about 2 months ago)

KmpSDK

Headless Kotlin Multiplatform SDK for Android and iOS.

Networking, auth, cache/offline sync, and MVI contracts — you own all UI (Compose, SwiftUI, XML, …).

Maven in.co.niteshkukreja:kmp-sdk
Version [Releases] (also sdkVersion in gradle.properties)

Find it in the docs

Scan I want to…, check What’s inside for keywords (UseCase, ViewModel, …), then open Go to.

Get running

I want to… What’s inside Go to
Install & KmpSdk.init in 5 minutes Dependency, init, KmpSdk.get, feature modules, host register getting-started
See Path A vs B vs C Comparison table, Path A UseCase sample, Path B cache flags, Path C + ViewModel / bindSyncList integration-paths
Copy-paste a working snippet Path A/B/C, analytics, auth, push, upload, sync banner, SSL, drafts, deep link, env switch recipes
Fix a build / runtime error Gradle, iOS publish, logging plugin, QueryKit, host register, TLS / pinning troubleshooting

Features & data

I want to… What’s inside Go to
Offline list + CRUD Feature Kit, RestResourceApi, generator, OpenAPI import, installRestResourceFeature feature-kit
UseCase + feature module KmpSdkModule, register / get UseCase, Path A UseCase example getting-started · integration-paths · recipes
ViewModel / MVI / list binding Path C notes: host ViewModel + bindSyncList; MVI contracts in SDK (MviViewModel) integration-paths · api-reference
HTTP cache, upload, realtime, resilience Path B cache, retry / circuit breaker, fileUpload, WebSocket / SSE, dedup / rate-limit networking
SSL / certificate pinning CertificateParams, certificateBuilder, openssl, Android-only, captive-portal vs pin fail networking § SSL
Offline queue & sync UI Offline mutations, syncCoordinator, syncStatus banner, dirty sync, drafts, QueryKit offline-sync

Host app wiring

I want to… What’s inside Go to
AppAnalytics / custom classes / telemetry Custom interface/class, expect/actual, register, feature UseCase wiring, KmpSdk.telemetry bridge getting-started §4
Auth & session auth { }, tokenRefreshHandler, sessionManager.login / events auth-and-config
Firebase Remote Config Host Firebase fetch → remoteConfig { } map, getBoolean / TTL key auth-and-config § RC
Environments / tenant Env vault (dev/staging/prod), switchTo, tenantManager auth-and-config
DI, deep links, push, background Koin / Hilt / Kodein bridges, deep link routes, push router, backgroundWork platform-integration
Messages → snackbar / toast messageEventBus collect → your UI platform-integration § Messages

Reference & tools

I want to… What’s inside Go to
API / KmpSdk.* cheat sheet Globals, init flags (certificateBuilder, …), debugger snapshot api-reference
What changed recently Feature Kit, sync, upload, DI, docs notes changelog
Consumer / sample checklist Path A/B/C demos, host injection, sync banner checklist sample-app
Full docs index Same goals, single index page docs/README
Generate a feature from YAML CLI, product.yaml / order.yaml, SQL option feature-generator
Import OpenAPI → Feature Kit Spec → YAML → generated feature openapi-import
SQLDelight migration helper Host schema migration tips migration-helper

Not sure which path? (30 seconds)

Need YOUR SQL offline for this feature?
  YES → Path C  → docs/feature-kit.md
  NO  → Last HTTP response offline OK?
         YES → Path B  → docs/networking.md + docs/integration-paths.md
         NO  → Path A  → docs/getting-started.md

More detail: docs/integration-paths.md.


Do / don’t (quick)

Do Don’t
Pick one path (A/B/C) per feature Mix Path C SQL + Path B cache for the same list without a reason
register host types in KmpSdk.init Expect Koin/Hilt alone to feed feature modules
Keep Firebase, Analytics, UI in the host app Expect the SDK to ship screens or Firebase
Use recipes + the table above to find docs Treat this README as the full API manual
Pin with certificateBuilder on prod Android when you have real pins Debug pinning on captive portal / wrong-host certs

60-second install

// shared/build.gradle.kts
implementation("in.co.niteshkukreja:kmp-sdk:[Releases]")

// Application.onCreate
KmpSdk.init(this) {
    baseUrl = "https://api.example.com"
    install(YourFeatureModule)
}

Repositories: mavenCentral() (add mavenLocal() only when testing a local publish).

Next (optional): SSL pinning → networking · Analytics → getting-started §4 · Firebase RC → auth-and-config


Sample app?

No in-repo Android/iOS sample yet. Use your consumer test app (e.g. TestingKmpSdk) — checklist: docs/sample-app.md.


Build (SDK maintainers)

.\gradlew.bat :kmp-sdk:compileDebugKotlinAndroid :kmp-sdk:allTests --no-daemon

Mac (incl. iOS targets for publish):

./gradlew :kmp-sdk:assemble --no-daemon

Publish iOS artifacts from a Mac (or macOS CI). See CONTRIBUTING.md.


What is NOT in the SDK

  • Compose / SwiftUI screens or themes
  • Platform toasts/snackbars
  • Your domain entities & use cases live in the host (SDK only provides contracts + install / get)
  • iOS certificate pinning (host Darwin / NSURLSession if needed)
Android
iOS
GitHub stars0
AuthorsNiteshKuk
Dependents0
Creation date5 months ago

Last activityabout 2 months ago
Latest release1.1.2 (about 2 months ago)

KmpSDK

Headless Kotlin Multiplatform SDK for Android and iOS.

Networking, auth, cache/offline sync, and MVI contracts — you own all UI (Compose, SwiftUI, XML, …).

Maven in.co.niteshkukreja:kmp-sdk
Version [Releases] (also sdkVersion in gradle.properties)

Find it in the docs

Scan I want to…, check What’s inside for keywords (UseCase, ViewModel, …), then open Go to.

Get running

I want to… What’s inside Go to
Install & KmpSdk.init in 5 minutes Dependency, init, KmpSdk.get, feature modules, host register getting-started
See Path A vs B vs C Comparison table, Path A UseCase sample, Path B cache flags, Path C + ViewModel / bindSyncList integration-paths
Copy-paste a working snippet Path A/B/C, analytics, auth, push, upload, sync banner, SSL, drafts, deep link, env switch recipes
Fix a build / runtime error Gradle, iOS publish, logging plugin, QueryKit, host register, TLS / pinning troubleshooting

Features & data

I want to… What’s inside Go to
Offline list + CRUD Feature Kit, RestResourceApi, generator, OpenAPI import, installRestResourceFeature feature-kit
UseCase + feature module KmpSdkModule, register / get UseCase, Path A UseCase example getting-started · integration-paths · recipes
ViewModel / MVI / list binding Path C notes: host ViewModel + bindSyncList; MVI contracts in SDK (MviViewModel) integration-paths · api-reference
HTTP cache, upload, realtime, resilience Path B cache, retry / circuit breaker, fileUpload, WebSocket / SSE, dedup / rate-limit networking
SSL / certificate pinning CertificateParams, certificateBuilder, openssl, Android-only, captive-portal vs pin fail networking § SSL
Offline queue & sync UI Offline mutations, syncCoordinator, syncStatus banner, dirty sync, drafts, QueryKit offline-sync

Host app wiring

I want to… What’s inside Go to
AppAnalytics / custom classes / telemetry Custom interface/class, expect/actual, register, feature UseCase wiring, KmpSdk.telemetry bridge getting-started §4
Auth & session auth { }, tokenRefreshHandler, sessionManager.login / events auth-and-config
Firebase Remote Config Host Firebase fetch → remoteConfig { } map, getBoolean / TTL key auth-and-config § RC
Environments / tenant Env vault (dev/staging/prod), switchTo, tenantManager auth-and-config
DI, deep links, push, background Koin / Hilt / Kodein bridges, deep link routes, push router, backgroundWork platform-integration
Messages → snackbar / toast messageEventBus collect → your UI platform-integration § Messages

Reference & tools

I want to… What’s inside Go to
API / KmpSdk.* cheat sheet Globals, init flags (certificateBuilder, …), debugger snapshot api-reference
What changed recently Feature Kit, sync, upload, DI, docs notes changelog
Consumer / sample checklist Path A/B/C demos, host injection, sync banner checklist sample-app
Full docs index Same goals, single index page docs/README
Generate a feature from YAML CLI, product.yaml / order.yaml, SQL option feature-generator
Import OpenAPI → Feature Kit Spec → YAML → generated feature openapi-import
SQLDelight migration helper Host schema migration tips migration-helper

Not sure which path? (30 seconds)

Need YOUR SQL offline for this feature?
  YES → Path C  → docs/feature-kit.md
  NO  → Last HTTP response offline OK?
         YES → Path B  → docs/networking.md + docs/integration-paths.md
         NO  → Path A  → docs/getting-started.md

More detail: docs/integration-paths.md.


Do / don’t (quick)

Do Don’t
Pick one path (A/B/C) per feature Mix Path C SQL + Path B cache for the same list without a reason
register host types in KmpSdk.init Expect Koin/Hilt alone to feed feature modules
Keep Firebase, Analytics, UI in the host app Expect the SDK to ship screens or Firebase
Use recipes + the table above to find docs Treat this README as the full API manual
Pin with certificateBuilder on prod Android when you have real pins Debug pinning on captive portal / wrong-host certs

60-second install

// shared/build.gradle.kts
implementation("in.co.niteshkukreja:kmp-sdk:[Releases]")

// Application.onCreate
KmpSdk.init(this) {
    baseUrl = "https://api.example.com"
    install(YourFeatureModule)
}

Repositories: mavenCentral() (add mavenLocal() only when testing a local publish).

Next (optional): SSL pinning → networking · Analytics → getting-started §4 · Firebase RC → auth-and-config


Sample app?

No in-repo Android/iOS sample yet. Use your consumer test app (e.g. TestingKmpSdk) — checklist: docs/sample-app.md.


Build (SDK maintainers)

.\gradlew.bat :kmp-sdk:compileDebugKotlinAndroid :kmp-sdk:allTests --no-daemon

Mac (incl. iOS targets for publish):

./gradlew :kmp-sdk:assemble --no-daemon

Publish iOS artifacts from a Mac (or macOS CI). See CONTRIBUTING.md.


What is NOT in the SDK

  • Compose / SwiftUI screens or themes
  • Platform toasts/snackbars
  • Your domain entities & use cases live in the host (SDK only provides contracts + install / get)
  • iOS certificate pinning (host Darwin / NSURLSession if needed)