A template for your new Jetpack Compose app.
Find a file
2025-12-29 13:04:16 +01:00
.github ci: fix typo 2025-11-26 23:10:30 +01:00
app ui: fix padding issue 2025-12-18 08:28:09 +01:00
core nav: simplify multiple navigation handling 2025-12-29 13:04:16 +01:00
features nav: simplify multiple navigation handling 2025-12-29 13:04:16 +01:00
gradle build: use kotlin version for serialization 2025-12-28 22:32:00 +01:00
gradle-plugins build: share compiler args 2025-12-28 21:33:37 +01:00
theme ui: fix system bars bad behavior 2025-12-08 17:52:36 +01:00
.editorconfig ci: add ktlint check 2025-11-27 21:43:56 +01:00
.gitignore structure: remove idea files from version control 2025-09-30 11:17:40 +02:00
build.gradle.kts ui: use navigation3 2025-12-12 20:44:38 +01:00
detekt-config.yml ci: add detekt check 2025-11-27 22:41:38 +01:00
gradle.properties global: fresh android compose project 2024-01-28 20:20:20 +01:00
gradlew initial: empty compose activity template 2022-01-08 12:50:08 +01:00
gradlew.bat initial: empty compose activity template 2022-01-08 12:50:08 +01:00
readme.md ui: tie state collection to lifecycle 2025-12-20 21:31:50 +01:00
settings.gradle.kts structure: rename spotlight feature to overview 2025-09-30 12:54:42 +02:00

Compose Sample

Release Build KtLint Detekt

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
  • 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