How zhoubuilds/android-starter works
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: GithubProjectRepository.kt Project repository · MainActivity.kt Main activity · StarterNetworkComponentManager.kt App network manager · ProjectFragment.kt Project screen
Components 26
App and features
- Main activity
app/src/main/java/com/whisper/starter/ui/activity/MainActivity.kt - Function demos
feature/function/src/main/java/com/whisper/feature/function/FunctionFragment.kt - Project screen
feature/project/src/main/java/com/whisper/feature/project/ProjectFragment.kt - Project state
feature/project/src/main/java/com/whisper/feature/project/ProjectViewModel.kt
Shared foundations
- Network contract
architecture/src/main/java/com/whisper/architecture/network/component/NetworkComponentManager.kt - OkHttp builder
architecture/src/main/java/com/whisper/architecture/network/OkHttpClientFactory.kt - Endpoint routing
architecture/src/main/java/com/whisper/architecture/network/interceptor/EndpointRoutingInterceptor.kt - Architecture UI
architecture/src/main/java/com/whisper/architecture/ui/fragment/ArchitectureFragment.kt - Business flows
foundation/src/main/java/com/whisper/foundation/function/ApiFlowFunctions.kt
Network and data
- Project repository
feature/project/src/main/java/com/whisper/feature/project/data/GithubProjectRepository.kt - Project model
feature/project/src/main/java/com/whisper/feature/project/model/GithubProject.kt - GitHub API
feature/project/src/main/java/com/whisper/feature/project/data/network/GithubProjectApi.kt - App network manager
app/src/main/java/com/whisper/starter/network/StarterNetworkComponentManager.kt - GitHub endpoint
feature/project/src/main/java/com/whisper/feature/project/data/network/GithubEndpointRoutingInterceptor.kt - GitHub parameters
feature/project/src/main/java/com/whisper/feature/project/data/network/GithubSystemParametersInterceptor.kt - Project DAO
feature/project/src/main/java/com/whisper/feature/project/data/database/GithubProjectDao.kt - Room database
app/src/main/java/com/whisper/starter/database/StarterDatabase.kt
Routing and discovery
- DAO discovery
habitat/habitat-runtime/src/main/java/com/whisper/habitat/runtime/HabitatFactory.kt - Habitat compiler
habitat/habitat-compiler/src/main/java/com/whisper/habitat/compiler/HabitatSymbolProcessor.kt - Aster routing
aster/aster-runtime/src/main/java/com/whisper/aster/runtime/Aster.kt - Aster compiler
aster/aster-compiler/src/main/java/com/whisper/aster/compiler/AsterProcessor.kt
Utilities and configuration
- Android UI kit
kit/src/main/java/com/whisper/kit/widget/refreshloadlayout/KitRefreshLoadLayout.kt - Logging
quill/src/main/java/com/whisper/quill/Quill.kt - Prism configuration
build-logic/src/main/kotlin/com/whisper/buildlogic/prism/PrismPlugin.kt
Other components
- App user
- GitHub service
Connections 24
- 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