# bobcgn/kmp-miniapp-sdk architecture

> Architecture diagram of the GitHub repository bobcgn/kmp-miniapp-sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bobcgn/kmp-miniapp-sdk
- Repository: https://github.com/bobcgn/kmp-miniapp-sdk

## Overview

This repository provides a Kotlin Multiplatform SDK for sharing Mini App client behavior and host capabilities while leaving rendering host-native. The principal workflow is a consumer calling the runtime API, using capability contracts supplied by the active host, and reaching platform behavior through the WeChat implementation. The tree also shows a JavaScript export boundary and broad WeChat integrations for device, media, location, payment, and other host features. Edges reflect the README and sampled storage/BLE implementation; unsampled subsystem wiring is intentionally not inferred.

Main entry points: [`sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/adapter`](https://github.com/bobcgn/kmp-miniapp-sdk/tree/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/adapter) (Host Adapters), [`sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/host/MiniAppHost.kt`](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/host/MiniAppHost.kt) (Host Contract), [`sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/export/MiniAppExports.kt`](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/export/MiniAppExports.kt) (JS Exports), [`sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/api/MiniAppSdk.kt`](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/api/MiniAppSdk.kt) (SDK API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Runtime API"]
  node_sdk_api["SDK API<br/>[MiniAppSdk.kt]"]
  node_host_contract["Host Contract<br/>[MiniAppHost.kt]"]
end

subgraph group_capabilities["Host Capabilities"]
  node_lifecycle["Lifecycle"]
  node_network["Network"]
  node_network_status["Network Status"]
  node_permissions["Permissions"]
  node_privacy["Privacy<br/>[MiniAppPrivacy.kt]"]
  node_storage["Storage<br/>[MiniAppStorage.kt]"]
end

subgraph group_wechat["WeChat Host"]
  node_wechat_host["WeChat Host<br/>[WechatHost.kt]"]
  node_wechat_adapters["Host Adapters"]
  node_wechat_interop["wx Interop<br/>[Wx.kt]"]
  node_wechat_runtime["Runtime Support"]
end

subgraph group_exports["JavaScript Boundary"]
  node_js_exports["JS Exports<br/>[MiniAppExports.kt]"]
  node_callback_adapter["Callback Adapter"]
  node_ble_session["BLE Session"]
end

node_consumer(("SDK Consumer"))
node_wechat_platform(("WeChat Runtime"))

node_consumer -->|"calls"| node_sdk_api
node_sdk_api -->|"uses host"| node_host_contract
node_host_contract -->|"implemented by"| node_wechat_host
node_wechat_host -->|"provides capabilities"| node_wechat_adapters
node_wechat_adapters -->|"invokes wx"| node_wechat_interop
node_wechat_interop -->|"calls"| node_wechat_platform
node_wechat_runtime -->|"observes"| node_wechat_platform
node_wechat_adapters -->|"adapts callbacks"| node_callback_adapter
node_js_exports -->|"exposes host behavior"| node_host_contract
node_js_exports -->|"provides BLE session"| node_ble_session
node_ble_session -->|"controls observation"| node_wechat_adapters
node_wechat_adapters -->|"implements capability"| node_lifecycle
node_wechat_adapters -->|"implements capability"| node_network
node_wechat_adapters -->|"implements capability"| node_network_status
node_wechat_adapters -->|"implements capability"| node_permissions
node_wechat_adapters -->|"implements capability"| node_privacy
node_wechat_adapters -->|"implements capability"| node_storage

click node_sdk_api "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/api/MiniAppSdk.kt"
click node_host_contract "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/host/MiniAppHost.kt"
click node_lifecycle "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/lifecycle/MiniAppLifecycle.kt"
click node_network "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/network/MiniAppHttpTransport.kt"
click node_network_status "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/network/MiniAppNetworkStatus.kt"
click node_permissions "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/permission/MiniAppPermissions.kt"
click node_privacy "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/privacy/MiniAppPrivacy.kt"
click node_storage "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/storage/MiniAppStorage.kt"
click node_wechat_host "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/WechatHost.kt"
click node_wechat_adapters "https://github.com/bobcgn/kmp-miniapp-sdk/tree/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/adapter"
click node_wechat_interop "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/interop/Wx.kt"
click node_wechat_runtime "https://github.com/bobcgn/kmp-miniapp-sdk/tree/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/runtime"
click node_js_exports "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/export/MiniAppExports.kt"
click node_callback_adapter "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/async/HostCallbackAdapter.kt"
click node_ble_session "https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/export/BleObservationSession.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sdk_api,node_host_contract toneBlue
class node_lifecycle,node_network,node_network_status,node_permissions,node_privacy,node_storage toneAmber
class node_wechat_host,node_wechat_adapters,node_wechat_interop,node_wechat_runtime toneMint
class node_js_exports,node_callback_adapter,node_ble_session toneRose
class node_consumer,node_wechat_platform toneIndigo
```

## Components

### Runtime API

- [SDK API](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/api/MiniAppSdk.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/api/MiniAppSdk.kt`
- [Host Contract](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/host/MiniAppHost.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/host/MiniAppHost.kt`

### Host Capabilities

- [Lifecycle](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/lifecycle/MiniAppLifecycle.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/lifecycle/MiniAppLifecycle.kt`
- [Network](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/network/MiniAppHttpTransport.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/network/MiniAppHttpTransport.kt`
- [Network Status](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/network/MiniAppNetworkStatus.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/network/MiniAppNetworkStatus.kt`
- [Permissions](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/permission/MiniAppPermissions.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/permission/MiniAppPermissions.kt`
- [Privacy](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/privacy/MiniAppPrivacy.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/privacy/MiniAppPrivacy.kt`
- [Storage](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/storage/MiniAppStorage.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/capability/storage/MiniAppStorage.kt`

### WeChat Host

- [WeChat Host](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/WechatHost.kt): `sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/WechatHost.kt`
- [Host Adapters](https://github.com/bobcgn/kmp-miniapp-sdk/tree/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/adapter): `sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/adapter`
- [wx Interop](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/interop/Wx.kt): `sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/interop/Wx.kt`
- [Runtime Support](https://github.com/bobcgn/kmp-miniapp-sdk/tree/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/runtime): `sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/host/wechat/runtime`

### JavaScript Boundary

- [JS Exports](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/export/MiniAppExports.kt): `sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/export/MiniAppExports.kt`
- [Callback Adapter](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/async/HostCallbackAdapter.kt): `sdk/src/commonMain/kotlin/io/github/bobcgn/miniapp/async/HostCallbackAdapter.kt`
- [BLE Session](https://github.com/bobcgn/kmp-miniapp-sdk/blob/main/sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/export/BleObservationSession.kt): `sdk/src/jsMain/kotlin/io/github/bobcgn/miniapp/export/BleObservationSession.kt`

### Other components

- **SDK Consumer**
- **WeChat Runtime**

## Connections

- SDK Consumer → SDK API: calls
- SDK API → Host Contract: uses host
- Host Contract → WeChat Host: implemented by
- WeChat Host → Host Adapters: provides capabilities
- Host Adapters → wx Interop: invokes wx
- wx Interop → WeChat Runtime: calls
- Runtime Support → WeChat Runtime: observes
- Host Adapters → Callback Adapter: adapts callbacks
- JS Exports → Host Contract: exposes host behavior
- JS Exports → BLE Session: provides BLE session
- BLE Session → Host Adapters: controls observation
- Host Adapters → Lifecycle: implements capability
- Host Adapters → Network: implements capability
- Host Adapters → Network Status: implements capability
- Host Adapters → Permissions: implements capability
- Host Adapters → Privacy: implements capability
- Host Adapters → Storage: implements capability
