# buddykang/kangapp architecture

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

- Interactive diagram: https://gitdiagram.com/buddykang/kangapp
- Repository: https://github.com/buddykang/kangapp

## Overview

KangApp is an Android Compose app whose current product feature is on-demand laundry-machine status lookup. The user opens the Laundry screen and taps query; the UI marks machines as querying, calls the repository, then displays returned statuses. The repository checks five configured machines concurrently using background WebViews, reads the rendered page and final URL, and classifies the result as available, busy, unavailable, or unknown. The README documents a left-side navigation menu and planned future modules; those future tools have no implementation shown. UI source was sampled only partially, so uncertain internal UI wiring is omitted.

Main entry points: [`app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt`](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt) (Laundry repository), [`app/src/main/java/com/kang/kangapp/ui/KangAppScreen.kt`](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/ui/KangAppScreen.kt) (Laundry screen), [`app/src/main/java/com/kang/kangapp/MainActivity.kt`](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/MainActivity.kt) (Activity entry), [`app/src/main/java/com/kang/kangapp/ui/theme/Theme.kt`](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/ui/theme/Theme.kt) (Compose theme)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app_ui["App and UI"]
  node_main_activity["Activity entry<br/>[MainActivity.kt]"]
  node_theme["Compose theme<br/>[Theme.kt]"]
  node_app_screen["App navigation<br/>[KangAppScreen.kt]"]
  node_laundry_screen["Laundry screen<br/>[KangAppScreen.kt]"]
end

subgraph group_laundry["Laundry lookup"]
  node_repository["Laundry repository"]
  node_machine_catalog["Machine catalog"]
  node_status_classifier["Status classifier"]
end

subgraph group_domain["Domain models"]
  node_laundry_models["Machine and status types<br/>[LaundryModels.kt]"]
end

node_user(("Phone user"))
node_h5_service["Qiekj H5 service"]

node_user -->|"opens app"| node_main_activity
node_main_activity -->|"sets content"| node_theme
node_theme -->|"renders"| node_app_screen
node_user -->|"starts or refreshes"| node_laundry_screen
node_app_screen -->|"shows"| node_laundry_screen
node_laundry_screen -->|"checks machines"| node_repository
node_repository -->|"reads list"| node_machine_catalog
node_repository -->|"loads pages"| node_h5_service
node_h5_service -->|"serves page content"| node_repository
node_repository -->|"classifies page"| node_status_classifier
node_status_classifier -->|"produces status"| node_laundry_models
node_repository -->|"returns results"| node_laundry_screen
node_laundry_screen -->|"displays statuses"| node_laundry_models

click node_main_activity "https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/MainActivity.kt"
click node_theme "https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/ui/theme/Theme.kt"
click node_app_screen "https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/ui/KangAppScreen.kt"
click node_laundry_screen "https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/ui/KangAppScreen.kt"
click node_repository "https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt"
click node_machine_catalog "https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt"
click node_status_classifier "https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt"
click node_laundry_models "https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/model/LaundryModels.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_main_activity,node_theme,node_app_screen,node_laundry_screen,node_user toneBlue
class node_repository,node_machine_catalog,node_status_classifier toneAmber
class node_laundry_models toneMint
class node_h5_service toneIndigo
```

## Components

### App and UI

- [Activity entry](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/MainActivity.kt): `app/src/main/java/com/kang/kangapp/MainActivity.kt`
- [Compose theme](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/ui/theme/Theme.kt): `app/src/main/java/com/kang/kangapp/ui/theme/Theme.kt`
- [App navigation](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/ui/KangAppScreen.kt): `app/src/main/java/com/kang/kangapp/ui/KangAppScreen.kt`
- [Laundry screen](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/ui/KangAppScreen.kt): `app/src/main/java/com/kang/kangapp/ui/KangAppScreen.kt`

### Laundry lookup

- [Laundry repository](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt): `app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt`
- [Machine catalog](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt): `app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt`
- [Status classifier](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt): `app/src/main/java/com/kang/kangapp/data/LaundryRepository.kt`

### Domain models

- [Machine and status types](https://github.com/buddykang/kangapp/blob/main/app/src/main/java/com/kang/kangapp/model/LaundryModels.kt): `app/src/main/java/com/kang/kangapp/model/LaundryModels.kt`

### Other components

- **Phone user**
- **Qiekj H5 service**

## Connections

- Phone user → Activity entry: opens app
- Activity entry → Compose theme: sets content
- Compose theme → App navigation: renders
- Phone user → Laundry screen: starts or refreshes
- App navigation → Laundry screen: shows
- Laundry screen → Laundry repository: checks machines
- Laundry repository → Machine catalog: reads list
- Laundry repository → Qiekj H5 service: loads pages
- Qiekj H5 service → Laundry repository: serves page content
- Laundry repository → Status classifier: classifies page
- Status classifier → Machine and status types: produces status
- Laundry repository → Laundry screen: returns results
- Laundry screen → Machine and status types: displays statuses
