# yikwing/ykmagic architecture

> Architecture diagram of the GitHub repository yikwing/ykmagic, 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/yikwing/ykmagic
- Repository: https://github.com/yikwing/ykmagic

## Overview

YkMagic is an Android development framework with reusable configuration, networking, permission, lifecycle, Compose, and extension modules. Its sample app provides the principal user workflow: launch the Compose application, navigate among authentication and utility/demo screens, and exercise network examples; the sampled repository shows chapter retrieval and Room caching. README-level module capabilities are included, but unsampled app wiring and module internals are not inferred.

Main entry points: [`app/src/main/java/com/yikwing/ykquickdev/repository/NetRepository.kt`](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/repository/NetRepository.kt) (Network repository), [`app/src/main/java/com/yikwing/ykquickdev/ui/ComposeActivity.kt`](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/ui/ComposeActivity.kt) (Compose activity), [`app/src/main/java/com/yikwing/ykquickdev/app/AppNavGraph.kt`](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/app/AppNavGraph.kt) (App navigation), [`app/src/main/java/com/yikwing/ykquickdev/api/apiserver/HttpBinApi.kt`](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/api/apiserver/HttpBinApi.kt) (HTTPBin API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Sample app"]
  node_compose_activity["Compose activity<br/>[ComposeActivity.kt]"]
  node_navigation["App navigation<br/>[AppNavGraph.kt]"]
  node_screens["Screens and demos"]
  node_viewmodels["Network viewmodels"]
end

subgraph group_framework["Framework modules"]
  node_config_module["JSON config<br/>[YkConfigManager.kt]"]
  node_network_module["Ktor networking"]
  node_extensions["Kotlin extensions"]
  node_compose_module["Compose utilities"]
end

subgraph group_networking["Network and data"]
  node_app_repository["Network repository<br/>[NetRepository.kt]"]
  node_httpbin_api["HTTPBin API<br/>[HttpBinApi.kt]"]
  node_wan_api["WanAndroid API<br/>[WanAndroidApi.kt]"]
  node_chapter_dao["Chapter DAO<br/>[ChapterDao.kt]"]
  node_room[("Room database<br/>[UserDatabase.kt]")]
end

subgraph group_platform["Android platform"]
  node_permission_module["Permission requests<br/>[PermissionX.kt]"]
  node_proxy_module["Lifecycle startup<br/>[AppInitializer.kt]"]
  node_hierarchy["Activity hierarchy"]
  node_net_connect["Connectivity state"]
end

node_developer(("Android developer"))
node_user(("App user"))
node_httpbin_service{{"HTTPBin service"}}
node_wan_service{{"WanAndroid service"}}

node_user -->|"launches"| node_compose_activity
node_compose_activity -->|"shows"| node_navigation
node_navigation -->|"routes to"| node_screens
node_app_repository -->|"calls"| node_httpbin_api
node_app_repository -->|"calls"| node_wan_api
node_app_repository -->|"reads and writes"| node_chapter_dao
node_room -->|"provides"| node_chapter_dao
node_httpbin_api -->|"requests"| node_httpbin_service
node_wan_api -->|"requests"| node_wan_service
node_developer -->|"integrates"| node_config_module
node_developer -->|"integrates"| node_network_module
node_developer -->|"integrates"| node_extensions
node_developer -->|"integrates"| node_compose_module
node_developer -->|"integrates"| node_permission_module
node_developer -->|"integrates"| node_proxy_module
node_developer -->|"uses"| node_hierarchy
node_developer -->|"uses"| node_net_connect

click node_compose_activity "https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/ui/ComposeActivity.kt"
click node_navigation "https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/app/AppNavGraph.kt"
click node_screens "https://github.com/yikwing/ykmagic/tree/compose/app/src/main/java/com/yikwing/ykquickdev/ui/screen"
click node_viewmodels "https://github.com/yikwing/ykmagic/tree/compose/app/src/main/java/com/yikwing/ykquickdev/viewmodel"
click node_app_repository "https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/repository/NetRepository.kt"
click node_httpbin_api "https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/api/apiserver/HttpBinApi.kt"
click node_wan_api "https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/api/apiserver/WanAndroidApi.kt"
click node_chapter_dao "https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/db/ChapterDao.kt"
click node_room "https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/db/UserDatabase.kt"
click node_config_module "https://github.com/yikwing/ykmagic/blob/compose/module_config/src/main/java/com/yikwing/config/YkConfigManager.kt"
click node_network_module "https://github.com/yikwing/ykmagic/tree/compose/module_network/src/main/java/com/yikwing/network"
click node_extensions "https://github.com/yikwing/ykmagic/tree/compose/module_extension/src/main/java/com/yikwing/extension"
click node_compose_module "https://github.com/yikwing/ykmagic/tree/compose/module_compose/src/main/java/com/yikwing/compose"
click node_permission_module "https://github.com/yikwing/ykmagic/blob/compose/module_permission/src/main/java/com/yikwing/permission/PermissionX.kt"
click node_proxy_module "https://github.com/yikwing/ykmagic/blob/compose/module_proxy/src/main/java/com/yikwing/proxy/startup/AppInitializer.kt"
click node_hierarchy "https://github.com/yikwing/ykmagic/blob/compose/module_proxy/src/main/java/com/yikwing/proxy/util/ActivityHierarchyManager.kt"
click node_net_connect "https://github.com/yikwing/ykmagic/blob/compose/module_extension/src/main/java/com/yikwing/extension/network/NetConnectManager.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_compose_activity,node_navigation,node_screens,node_viewmodels,node_user toneBlue
class node_config_module,node_network_module,node_extensions,node_compose_module toneAmber
class node_app_repository,node_httpbin_api,node_wan_api,node_chapter_dao,node_room toneMint
class node_permission_module,node_proxy_module,node_hierarchy,node_net_connect toneRose
class node_developer,node_httpbin_service,node_wan_service toneIndigo
```

## Components

### Sample app

- [Compose activity](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/ui/ComposeActivity.kt): `app/src/main/java/com/yikwing/ykquickdev/ui/ComposeActivity.kt`
- [App navigation](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/app/AppNavGraph.kt): `app/src/main/java/com/yikwing/ykquickdev/app/AppNavGraph.kt`
- [Screens and demos](https://github.com/yikwing/ykmagic/tree/compose/app/src/main/java/com/yikwing/ykquickdev/ui/screen): `app/src/main/java/com/yikwing/ykquickdev/ui/screen`
- [Network viewmodels](https://github.com/yikwing/ykmagic/tree/compose/app/src/main/java/com/yikwing/ykquickdev/viewmodel): `app/src/main/java/com/yikwing/ykquickdev/viewmodel`

### Framework modules

- [JSON config](https://github.com/yikwing/ykmagic/blob/compose/module_config/src/main/java/com/yikwing/config/YkConfigManager.kt): `module_config/src/main/java/com/yikwing/config/YkConfigManager.kt`
- [Ktor networking](https://github.com/yikwing/ykmagic/tree/compose/module_network/src/main/java/com/yikwing/network): `module_network/src/main/java/com/yikwing/network`
- [Kotlin extensions](https://github.com/yikwing/ykmagic/tree/compose/module_extension/src/main/java/com/yikwing/extension): `module_extension/src/main/java/com/yikwing/extension`
- [Compose utilities](https://github.com/yikwing/ykmagic/tree/compose/module_compose/src/main/java/com/yikwing/compose): `module_compose/src/main/java/com/yikwing/compose`

### Network and data

- [Network repository](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/repository/NetRepository.kt): `app/src/main/java/com/yikwing/ykquickdev/repository/NetRepository.kt`
- [HTTPBin API](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/api/apiserver/HttpBinApi.kt): `app/src/main/java/com/yikwing/ykquickdev/api/apiserver/HttpBinApi.kt`
- [WanAndroid API](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/api/apiserver/WanAndroidApi.kt): `app/src/main/java/com/yikwing/ykquickdev/api/apiserver/WanAndroidApi.kt`
- [Chapter DAO](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/db/ChapterDao.kt): `app/src/main/java/com/yikwing/ykquickdev/db/ChapterDao.kt`
- [Room database](https://github.com/yikwing/ykmagic/blob/compose/app/src/main/java/com/yikwing/ykquickdev/db/UserDatabase.kt): `app/src/main/java/com/yikwing/ykquickdev/db/UserDatabase.kt`

### Android platform

- [Permission requests](https://github.com/yikwing/ykmagic/blob/compose/module_permission/src/main/java/com/yikwing/permission/PermissionX.kt): `module_permission/src/main/java/com/yikwing/permission/PermissionX.kt`
- [Lifecycle startup](https://github.com/yikwing/ykmagic/blob/compose/module_proxy/src/main/java/com/yikwing/proxy/startup/AppInitializer.kt): `module_proxy/src/main/java/com/yikwing/proxy/startup/AppInitializer.kt`
- [Activity hierarchy](https://github.com/yikwing/ykmagic/blob/compose/module_proxy/src/main/java/com/yikwing/proxy/util/ActivityHierarchyManager.kt): `module_proxy/src/main/java/com/yikwing/proxy/util/ActivityHierarchyManager.kt`
- [Connectivity state](https://github.com/yikwing/ykmagic/blob/compose/module_extension/src/main/java/com/yikwing/extension/network/NetConnectManager.kt): `module_extension/src/main/java/com/yikwing/extension/network/NetConnectManager.kt`

### Other components

- **Android developer**
- **App user**
- **HTTPBin service**
- **WanAndroid service**

## Connections

- App user → Compose activity: launches
- Compose activity → App navigation: shows
- App navigation → Screens and demos: routes to
- Network repository → HTTPBin API: calls
- Network repository → WanAndroid API: calls
- Network repository → Chapter DAO: reads and writes
- Room database → Chapter DAO: provides
- HTTPBin API → HTTPBin service: requests
- WanAndroid API → WanAndroid service: requests
- Android developer → JSON config: integrates
- Android developer → Ktor networking: integrates
- Android developer → Kotlin extensions: integrates
- Android developer → Compose utilities: integrates
- Android developer → Permission requests: integrates
- Android developer → Lifecycle startup: integrates
- Android developer → Activity hierarchy: uses
- Android developer → Connectivity state: uses
