mirror of
https://github.com/mrlem/android-compose-template.git
synced 2026-02-20 13:31:53 +00:00
A template for your new Jetpack Compose app.
android
clean-architecture
coil
compose-navigation
hilt
jetpack-compose
kotlin
kotlin-dsl
mvi
navigation3
- Kotlin 100%
| .github | ||
| app | ||
| core | ||
| features | ||
| gradle | ||
| gradle-plugins | ||
| theme | ||
| .editorconfig | ||
| .gitignore | ||
| build.gradle.kts | ||
| detekt-config.yml | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| readme.md | ||
| settings.gradle.kts | ||
Compose Sample
A project template with the following objectives in mind:
- use modern UI tools
- use a single source of truth
- make it painless to write new features
- optimized for incremental build
Technical stack
- arch:
- app: clean architecture with features x layer modularization
- ui: simplified MVI
- build: kts gradle build scripts + gradle convention plugins to simplify + version catalog
- dep injection: hilt + auto-dagger
- ui: compose + material3 + navigation3
- async: coroutines & flow
- db: room
- rest: retrofit
- annotation processing: ksp only, no kapt
App structure
Modules hierarchy:
- app
- core
- di
- feature
- nav
- ui
- ui
- theme
- features
- overview
- nav
- ui
- library
- data
- domain
- nav
- ui
- overview
- gradle-plugins
Feature module plugins:
- app.feature.data
- app.feature.domain
- app.feature.nav
- app.feature.ui
Each adds all requirements for the module of a given layer, save the android namespace.
Navigation is using dedicated modules for stronger feature isolation.
Future
- doc:
- document appInit task
- document features creation
- unit tests
- room: migration handling
- di: investigate moving from hilt+autodagger to metro once it gets more mature