# jdhubbard777/io.github.jdhubbard777.myshoppinglist architecture

> Architecture diagram of the GitHub repository jdhubbard777/io.github.jdhubbard777.myshoppinglist, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist
- Repository: https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist

## Overview

This repository is a Kotlin Multiplatform greeting demo, despite its shopping-list name; the sampled UI displays a platform-specific greeting rather than shopping-list workflows. Users can launch Compose interfaces on Android, desktop, iOS, or WebAssembly, while a separate Ktor server responds to a root request. The shared UI uses greeting logic and platform implementations, and the apps and server share a greeting helper. The README documents these targets; unsampled module details are not inferred.

Main entry points: [`app/shared/src/App.kt`](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/shared/src/App.kt) (Compose UI), [`app/shared/src/Greeting.kt`](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/shared/src/Greeting.kt) (Greeting logic), [`app/androidApp/src/MainActivity.kt`](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/androidApp/src/MainActivity.kt) (Android app), [`app/desktopApp/src/main.kt`](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/desktopApp/src/main.kt) (Desktop app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client applications"]
  node_android["Android app<br/>[MainActivity.kt]"]
  node_desktop["Desktop app<br/>[main.kt]"]
  node_ios["iOS app<br/>[ViewController.kt]"]
  node_web["Web app<br/>[main.kt]"]
end

subgraph group_shared["Shared app logic"]
  node_ui["Compose UI<br/>[App.kt]"]
  node_greeting["Greeting logic<br/>[Greeting.kt]"]
  node_platform["Platform contract<br/>[Platform.kt]"]
  node_adapters["Platform adapters"]
  node_helper["Greeting helper<br/>[GreetingUtil.kt]"]
end

subgraph group_server["Server"]
  node_serverapp["Ktor server<br/>[Application.kt]"]
end

node_user(("User"))

node_user -->|"opens"| node_android
node_user -->|"opens"| node_desktop
node_user -->|"opens"| node_ios
node_user -->|"opens"| node_web
node_android -->|"renders"| node_ui
node_desktop -->|"renders"| node_ui
node_ios -->|"renders"| node_ui
node_web -->|"renders"| node_ui
node_ui -->|"displays"| node_greeting
node_greeting -->|"gets platform"| node_platform
node_adapters -->|"implement"| node_platform
node_greeting -->|"gets greeting"| node_helper
node_serverapp -->|"responds with"| node_helper
node_user -.->|"requests"| node_serverapp

click node_android "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/androidApp/src/MainActivity.kt"
click node_desktop "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/desktopApp/src/main.kt"
click node_ios "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/iosApp/src/ViewController.kt"
click node_web "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/webApp/src/main.kt"
click node_ui "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/shared/src/App.kt"
click node_greeting "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/shared/src/Greeting.kt"
click node_platform "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/shared/src/Platform.kt"
click node_adapters "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/tree/main/app/shared/src"
click node_helper "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/core/src/GreetingUtil.kt"
click node_serverapp "https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/server/src/Application.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_android,node_desktop,node_ios,node_web,node_user toneBlue
class node_ui,node_greeting,node_platform,node_adapters,node_helper toneAmber
class node_serverapp toneMint
```

## Components

### Client applications

- [Android app](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/androidApp/src/MainActivity.kt): `app/androidApp/src/MainActivity.kt`
- [Desktop app](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/desktopApp/src/main.kt): `app/desktopApp/src/main.kt`
- [iOS app](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/iosApp/src/ViewController.kt): `app/iosApp/src/ViewController.kt`
- [Web app](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/webApp/src/main.kt): `app/webApp/src/main.kt`

### Shared app logic

- [Compose UI](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/shared/src/App.kt): `app/shared/src/App.kt`
- [Greeting logic](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/shared/src/Greeting.kt): `app/shared/src/Greeting.kt`
- [Platform contract](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/app/shared/src/Platform.kt): `app/shared/src/Platform.kt`
- [Platform adapters](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/tree/main/app/shared/src): `app/shared/src`
- [Greeting helper](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/core/src/GreetingUtil.kt): `core/src/GreetingUtil.kt`

### Server

- [Ktor server](https://github.com/jdhubbard777/io.github.jdhubbard777.myshoppinglist/blob/main/server/src/Application.kt): `server/src/Application.kt`

### Other components

- **User**

## Connections

- User → Android app: opens (evidence: `README.md`)
- User → Desktop app: opens (evidence: `README.md`)
- User → iOS app: opens (evidence: `README.md`)
- User → Web app: opens (evidence: `README.md`)
- Android app → Compose UI: renders (evidence: `app/androidApp/src/MainActivity.kt`)
- Desktop app → Compose UI: renders (evidence: `app/desktopApp/src/main.kt`)
- iOS app → Compose UI: renders (evidence: `app/iosApp/src/ViewController.kt`)
- Web app → Compose UI: renders (evidence: `app/webApp/src/main.kt`)
- Compose UI → Greeting logic: displays (evidence: `app/shared/src/App.kt`)
- Greeting logic → Platform contract: gets platform (evidence: `app/shared/src/Greeting.kt`)
- Platform adapters → Platform contract: implement (evidence: `app/shared/src@android/Platform.android.kt`)
- Greeting logic → Greeting helper: gets greeting (evidence: `README.md`)
- Ktor server → Greeting helper: responds with (evidence: `server/src/Application.kt`)
- User → Ktor server: requests
