> For the complete documentation index, see [llms.txt](https://myben.gitbook.io/ben-platform/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://myben.gitbook.io/ben-platform/sdlc/development/architecture/component.md).

# Component

Mermaid diagrams

{% hint style="info" %}
Mermaid diagrams require javascript enabled.&#x20;
{% endhint %}

Ben Wallet mobile app

{% @mermaid/diagram content="C4Component
Container\_Boundary(ben\_wallet, "Ben Wallet mobile app") {
Component(wallet\_ui, "Ben UI", "Kotlin")
Component(ui\_components, "UI Composables", "Kotlin")
Component(ben\_core, "Ben Core", "Kotlin", "Business logic")
Component(sdk, "Kotlin SDK for Android apps", "Kotlin", "Stellar SDK")
ComponentDb(local\_db, "Ben Local Data", "Room", "Settings, Caching, etc.")
Component(passkeys, "Passkeys", "Kotlin")
Component(ben\_models, "Ben Models", "Kotlin")
Component(ben\_ext, "Ben NativeExt", "Kotlin")
}

Container\_Boundary(dependencies, "Ext Modules") {
Component(http\_module, "Http Client", "Kotlin")
Component(jsonrpc\_module, "JSON-RPC Client", "Kotlin")
Component(credential\_mgr, "Credential Manager", "Kotlin")
}

Container\_Boundary(android\_os, "Android OS") {
Component\_Ext(android\_cm, "Android Credential Manager API", "C++")
Component\_Ext(android\_ndk, "Android Native .so modules", "C++")
}

Container\_Boundary(android\_bridge, "Android OS") {
Component\_Ext(jni, "Java Native Interface (JNI) bridge", "Kotlin/Java//C++")\
}

Rel(wallet\_ui, ui\_components, "uses")
Rel(wallet\_ui, ben\_core, "uses")
Rel(wallet\_ui, ben\_core, "uses")
Rel(ben\_core, passkeys, "uses")
Rel(ben\_core, local\_db, "uses")
Rel(ben\_core, sdk, "uses")
Rel(ben\_core, ben\_ext, "uses")
Rel(ben\_core, ben\_models, "uses")
Rel(passkeys, credential\_mgr, "uses")

Rel(sdk, http\_module, "uses")
Rel(sdk, jsonrpc\_module, "uses")
Rel(sdk, credential\_mgr, "uses")
Rel(ben\_ext, jni, "uses")

Rel(credential\_mgr, jni, "uses")
Rel(jni, android\_cm, "calls")
Rel(jni, android\_ndk, "calls")

UpdateRelStyle(ben\_core, ben\_models, $offsetY="110", $offsetX="10")

UpdateElementStyle(jni, $bgColor="black")
UpdateElementStyle(android\_ndk, $bgColor="black")
UpdateElementStyle(android\_cm, $bgColor="black")
UpdateLayoutConfig($c4BoundaryInRow="2", $c4ShapeInRow="2")" fullWidth="false" %}
