Android Architecture Standards
Priority: P0 (CRITICAL)
Implementation Guidelines
Layering (Clean Architecture)
- Domain: Pure Kotlin (No Android deps). Contains UseCases/Models.
- Data: Repository impl, DataSources (API/DB). Maps DTO -> Domain.
- UI: ViewModel + Composable. Maps Domain -> UiState.
Modularization
- Feature Modules:
:feature:home,:feature:profile. - Core Modules:
:core:ui(Design System),:core:network,:core:database. - App Module: DI Root and Navigation Guard.
Unidirectional Data Flow (UDF)
- Events: UI -> ViewModel (Events).
- State: ViewModel -> UI (StateFlow).
Jetpack Compose
- Hosting: Are you using
setContentin Activity? (No XML Layouts) - State: Is state hoisted to ViewModel using
collectAsStateWithLifecycle? - Unidirectional: Are events passed UP and state passed DOWN?
- Recomposition: Are Composables stable? (Check for unstable types in parameters)
- Navigation: Is
Compose Navigationusing Type-Safe destinations?
Anti-Patterns
- No Logic in Activity: Host Navigation only.
- No Repo in UI: Access data exclusively via ViewModel.
- No Context in Domain: Keep Logic Pure.
References
- Structure & Examples
- Jetpack Compose Best Practices