# zhoubuilds/android-starter architecture

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

## Overview

Android Starter is a modular Android application starter and reusable framework, not a single-purpose business app. The example user flow opens the app, navigates to the Project feature, refreshes GitHub project data, converts the response into a domain model, and persists it to Room before displaying it. The README also documents reusable architecture/networking, Habitat DAO discovery, Aster routing and capability discovery, Kit UI utilities, Quill logging, and optional Prism configuration. Wiring beyond the sampled repository and network code is based on documented module responsibilities.

Main entry points: [`feature/project/src/main/java/com/whisper/feature/project/data/GithubProjectRepository.kt`](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/GithubProjectRepository.kt) (Project repository), [`app/src/main/java/com/whisper/starter/ui/activity/MainActivity.kt`](https://github.com/zhoubuilds/android-starter/blob/develop/app/src/main/java/com/whisper/starter/ui/activity/MainActivity.kt) (Main activity), [`app/src/main/java/com/whisper/starter/network/StarterNetworkComponentManager.kt`](https://github.com/zhoubuilds/android-starter/blob/develop/app/src/main/java/com/whisper/starter/network/StarterNetworkComponentManager.kt) (App network manager), [`feature/project/src/main/java/com/whisper/feature/project/ProjectFragment.kt`](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/ProjectFragment.kt) (Project screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app_feature["App and features"]
  node_main["Main activity<br/>[MainActivity.kt]"]
  node_function["Function demos"]
  node_project_ui["Project screen<br/>[ProjectFragment.kt]"]
  node_project_vm["Project state"]
end

subgraph group_shared["Shared foundations"]
  node_network_contract["Network contract"]
  node_okhttp_factory["OkHttp builder"]
  node_endpoint["Endpoint routing"]
  node_architecture_ui["Architecture UI"]
  node_business["Business flows"]
end

subgraph group_network_data["Network and data"]
  node_repo["Project repository"]
  node_domain["Project model<br/>[GithubProject.kt]"]
  node_api["GitHub API"]
  node_network_manager["App network manager"]
  node_github_endpoint["GitHub endpoint"]
  node_github_parameters["GitHub parameters"]
  node_dao["Project DAO"]
  node_database[("Room database<br/>[StarterDatabase.kt]")]
end

subgraph group_discovery["Routing and discovery"]
  node_habitat["DAO discovery<br/>[HabitatFactory.kt]"]
  node_habitat_compiler["Habitat compiler"]
  node_aster_runtime["Aster routing<br/>[Aster.kt]"]
  node_aster_compiler["Aster compiler<br/>[AsterProcessor.kt]"]
end

subgraph group_utilities["Utilities and configuration"]
  node_kit["Android UI kit"]
  node_quill["Logging<br/>[Quill.kt]"]
  node_prism["Prism configuration<br/>[PrismPlugin.kt]"]
end

node_user(("App user"))
node_github(("GitHub service"))

node_user -->|"opens"| node_main
node_main -->|"navigates"| node_project_ui
node_main -->|"navigates"| node_function
node_project_ui -->|"renders state"| node_project_vm
node_project_vm -->|"requests data"| node_repo
node_repo -->|"fetches project"| node_api
node_api -->|"HTTP request"| node_github
node_repo -->|"reads and writes"| node_dao
node_repo -->|"maps data"| node_domain
node_dao -->|"uses"| node_database
node_repo -->|"resolves DAO"| node_habitat
node_database -->|"provides database"| node_habitat
node_habitat_compiler -->|"registers DAO"| node_habitat
node_api -->|"uses network contract"| node_network_contract
node_network_manager -->|"implements"| node_network_contract
node_okhttp_factory -->|"resolves components"| node_network_contract
node_network_manager -->|"creates interceptor"| node_github_endpoint
node_network_manager -->|"creates interceptor"| node_github_parameters
node_github_endpoint -->|"extends routing"| node_endpoint
node_aster_compiler -->|"generates registrations"| node_aster_runtime
node_project_ui -.->|"uses refresh UI"| node_kit
node_project_vm -.->|"uses UI architecture"| node_architecture_ui
node_repo -.->|"uses flow mapping"| node_business
node_main -.->|"optional routing"| node_aster_runtime

click node_main "https://github.com/zhoubuilds/android-starter/blob/develop/app/src/main/java/com/whisper/starter/ui/activity/MainActivity.kt"
click node_function "https://github.com/zhoubuilds/android-starter/blob/develop/feature/function/src/main/java/com/whisper/feature/function/FunctionFragment.kt"
click node_project_ui "https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/ProjectFragment.kt"
click node_project_vm "https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/ProjectViewModel.kt"
click node_repo "https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/GithubProjectRepository.kt"
click node_domain "https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/model/GithubProject.kt"
click node_api "https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/network/GithubProjectApi.kt"
click node_network_manager "https://github.com/zhoubuilds/android-starter/blob/develop/app/src/main/java/com/whisper/starter/network/StarterNetworkComponentManager.kt"
click node_network_contract "https://github.com/zhoubuilds/android-starter/blob/develop/architecture/src/main/java/com/whisper/architecture/network/component/NetworkComponentManager.kt"
click node_okhttp_factory "https://github.com/zhoubuilds/android-starter/blob/develop/architecture/src/main/java/com/whisper/architecture/network/OkHttpClientFactory.kt"
click node_endpoint "https://github.com/zhoubuilds/android-starter/blob/develop/architecture/src/main/java/com/whisper/architecture/network/interceptor/EndpointRoutingInterceptor.kt"
click node_github_endpoint "https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/network/GithubEndpointRoutingInterceptor.kt"
click node_github_parameters "https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/network/GithubSystemParametersInterceptor.kt"
click node_dao "https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/database/GithubProjectDao.kt"
click node_database "https://github.com/zhoubuilds/android-starter/blob/develop/app/src/main/java/com/whisper/starter/database/StarterDatabase.kt"
click node_habitat "https://github.com/zhoubuilds/android-starter/blob/develop/habitat/habitat-runtime/src/main/java/com/whisper/habitat/runtime/HabitatFactory.kt"
click node_habitat_compiler "https://github.com/zhoubuilds/android-starter/blob/develop/habitat/habitat-compiler/src/main/java/com/whisper/habitat/compiler/HabitatSymbolProcessor.kt"
click node_aster_runtime "https://github.com/zhoubuilds/android-starter/blob/develop/aster/aster-runtime/src/main/java/com/whisper/aster/runtime/Aster.kt"
click node_aster_compiler "https://github.com/zhoubuilds/android-starter/blob/develop/aster/aster-compiler/src/main/java/com/whisper/aster/compiler/AsterProcessor.kt"
click node_architecture_ui "https://github.com/zhoubuilds/android-starter/blob/develop/architecture/src/main/java/com/whisper/architecture/ui/fragment/ArchitectureFragment.kt"
click node_business "https://github.com/zhoubuilds/android-starter/blob/develop/foundation/src/main/java/com/whisper/foundation/function/ApiFlowFunctions.kt"
click node_kit "https://github.com/zhoubuilds/android-starter/blob/develop/kit/src/main/java/com/whisper/kit/widget/refreshloadlayout/KitRefreshLoadLayout.kt"
click node_quill "https://github.com/zhoubuilds/android-starter/blob/develop/quill/src/main/java/com/whisper/quill/Quill.kt"
click node_prism "https://github.com/zhoubuilds/android-starter/blob/develop/build-logic/src/main/kotlin/com/whisper/buildlogic/prism/PrismPlugin.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,node_function,node_project_ui,node_project_vm,node_user toneBlue
class node_network_contract,node_okhttp_factory,node_endpoint,node_architecture_ui,node_business toneAmber
class node_repo,node_domain,node_api,node_network_manager,node_github_endpoint,node_github_parameters,node_dao,node_database toneMint
class node_habitat,node_habitat_compiler,node_aster_runtime,node_aster_compiler toneRose
class node_kit,node_quill,node_prism,node_github toneIndigo
```

## Components

### App and features

- [Main activity](https://github.com/zhoubuilds/android-starter/blob/develop/app/src/main/java/com/whisper/starter/ui/activity/MainActivity.kt): `app/src/main/java/com/whisper/starter/ui/activity/MainActivity.kt`
- [Function demos](https://github.com/zhoubuilds/android-starter/blob/develop/feature/function/src/main/java/com/whisper/feature/function/FunctionFragment.kt): `feature/function/src/main/java/com/whisper/feature/function/FunctionFragment.kt`
- [Project screen](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/ProjectFragment.kt): `feature/project/src/main/java/com/whisper/feature/project/ProjectFragment.kt`
- [Project state](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/ProjectViewModel.kt): `feature/project/src/main/java/com/whisper/feature/project/ProjectViewModel.kt`

### Shared foundations

- [Network contract](https://github.com/zhoubuilds/android-starter/blob/develop/architecture/src/main/java/com/whisper/architecture/network/component/NetworkComponentManager.kt): `architecture/src/main/java/com/whisper/architecture/network/component/NetworkComponentManager.kt`
- [OkHttp builder](https://github.com/zhoubuilds/android-starter/blob/develop/architecture/src/main/java/com/whisper/architecture/network/OkHttpClientFactory.kt): `architecture/src/main/java/com/whisper/architecture/network/OkHttpClientFactory.kt`
- [Endpoint routing](https://github.com/zhoubuilds/android-starter/blob/develop/architecture/src/main/java/com/whisper/architecture/network/interceptor/EndpointRoutingInterceptor.kt): `architecture/src/main/java/com/whisper/architecture/network/interceptor/EndpointRoutingInterceptor.kt`
- [Architecture UI](https://github.com/zhoubuilds/android-starter/blob/develop/architecture/src/main/java/com/whisper/architecture/ui/fragment/ArchitectureFragment.kt): `architecture/src/main/java/com/whisper/architecture/ui/fragment/ArchitectureFragment.kt`
- [Business flows](https://github.com/zhoubuilds/android-starter/blob/develop/foundation/src/main/java/com/whisper/foundation/function/ApiFlowFunctions.kt): `foundation/src/main/java/com/whisper/foundation/function/ApiFlowFunctions.kt`

### Network and data

- [Project repository](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/GithubProjectRepository.kt): `feature/project/src/main/java/com/whisper/feature/project/data/GithubProjectRepository.kt`
- [Project model](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/model/GithubProject.kt): `feature/project/src/main/java/com/whisper/feature/project/model/GithubProject.kt`
- [GitHub API](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/network/GithubProjectApi.kt): `feature/project/src/main/java/com/whisper/feature/project/data/network/GithubProjectApi.kt`
- [App network manager](https://github.com/zhoubuilds/android-starter/blob/develop/app/src/main/java/com/whisper/starter/network/StarterNetworkComponentManager.kt): `app/src/main/java/com/whisper/starter/network/StarterNetworkComponentManager.kt`
- [GitHub endpoint](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/network/GithubEndpointRoutingInterceptor.kt): `feature/project/src/main/java/com/whisper/feature/project/data/network/GithubEndpointRoutingInterceptor.kt`
- [GitHub parameters](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/network/GithubSystemParametersInterceptor.kt): `feature/project/src/main/java/com/whisper/feature/project/data/network/GithubSystemParametersInterceptor.kt`
- [Project DAO](https://github.com/zhoubuilds/android-starter/blob/develop/feature/project/src/main/java/com/whisper/feature/project/data/database/GithubProjectDao.kt): `feature/project/src/main/java/com/whisper/feature/project/data/database/GithubProjectDao.kt`
- [Room database](https://github.com/zhoubuilds/android-starter/blob/develop/app/src/main/java/com/whisper/starter/database/StarterDatabase.kt): `app/src/main/java/com/whisper/starter/database/StarterDatabase.kt`

### Routing and discovery

- [DAO discovery](https://github.com/zhoubuilds/android-starter/blob/develop/habitat/habitat-runtime/src/main/java/com/whisper/habitat/runtime/HabitatFactory.kt): `habitat/habitat-runtime/src/main/java/com/whisper/habitat/runtime/HabitatFactory.kt`
- [Habitat compiler](https://github.com/zhoubuilds/android-starter/blob/develop/habitat/habitat-compiler/src/main/java/com/whisper/habitat/compiler/HabitatSymbolProcessor.kt): `habitat/habitat-compiler/src/main/java/com/whisper/habitat/compiler/HabitatSymbolProcessor.kt`
- [Aster routing](https://github.com/zhoubuilds/android-starter/blob/develop/aster/aster-runtime/src/main/java/com/whisper/aster/runtime/Aster.kt): `aster/aster-runtime/src/main/java/com/whisper/aster/runtime/Aster.kt`
- [Aster compiler](https://github.com/zhoubuilds/android-starter/blob/develop/aster/aster-compiler/src/main/java/com/whisper/aster/compiler/AsterProcessor.kt): `aster/aster-compiler/src/main/java/com/whisper/aster/compiler/AsterProcessor.kt`

### Utilities and configuration

- [Android UI kit](https://github.com/zhoubuilds/android-starter/blob/develop/kit/src/main/java/com/whisper/kit/widget/refreshloadlayout/KitRefreshLoadLayout.kt): `kit/src/main/java/com/whisper/kit/widget/refreshloadlayout/KitRefreshLoadLayout.kt`
- [Logging](https://github.com/zhoubuilds/android-starter/blob/develop/quill/src/main/java/com/whisper/quill/Quill.kt): `quill/src/main/java/com/whisper/quill/Quill.kt`
- [Prism configuration](https://github.com/zhoubuilds/android-starter/blob/develop/build-logic/src/main/kotlin/com/whisper/buildlogic/prism/PrismPlugin.kt): `build-logic/src/main/kotlin/com/whisper/buildlogic/prism/PrismPlugin.kt`

### Other components

- **App user**
- **GitHub service**

## Connections

- App user → Main activity: opens
- Main activity → Project screen: navigates
- Main activity → Function demos: navigates
- Project screen → Project state: renders state
- Project state → Project repository: requests data
- Project repository → GitHub API: fetches project
- GitHub API → GitHub service: HTTP request
- Project repository → Project DAO: reads and writes
- Project repository → Project model: maps data
- Project DAO → Room database: uses
- Project repository → DAO discovery: resolves DAO
- Room database → DAO discovery: provides database
- Habitat compiler → DAO discovery: registers DAO
- GitHub API → Network contract: uses network contract
- App network manager → Network contract: implements
- OkHttp builder → Network contract: resolves components
- App network manager → GitHub endpoint: creates interceptor
- App network manager → GitHub parameters: creates interceptor
- GitHub endpoint → Endpoint routing: extends routing
- Aster compiler → Aster routing: generates registrations
- Project screen → Android UI kit: uses refresh UI
- Project state → Architecture UI: uses UI architecture
- Project repository → Business flows: uses flow mapping
- Main activity → Aster routing: optional routing
