Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.

Project structure · Mobile

Android with Kotlin and Compose project structure

Opens with credits

For anyone building a native Android app the way Google recommends in 2026: Kotlin, Jetpack Compose, a ViewModel per screen, repositories over Room and the network, and Hilt wiring it together. The tree starts from Android Studio's Empty Activity template, grows into feature packages with data, domain and presentation, adds signing, shrinking, CI and crash reporting for production, and ends as a multi-module build with convention plugins, Baseline Profiles and staged rollouts.

Curated by Tauseef FayyazIntermediate290 files and foldersAndroid Gradle Plugin 9.4, Gradle 9.6, Kotlin 2.4Checked October 2026
Explore the filesPick any file to see what it is, why it exists and when you add it.

How it grows

Each stage opens the explorer there

  1. 1Day 1What the scaffold and your first hour give you50 files and folders
  2. 2GrowingWhat a real app with features and tests adds+104 files and folders
  3. ProductionWhat running it for real users adds+45 files and foldersOpens with credits
  4. ExpertWhat a team needs to keep it healthy for years+91 files and foldersOpens with credits

How it is organised

  • Follow Google's app architecture guide: a UI layer (Compose screens and ViewModels), a data layer (repositories over Room and the network), and a domain layer only when logic is shared or complex.
  • Feature first: each feature package holds its own data, domain and presentation, and shared infrastructure lives in core. Features never import each other. The guide's by-type layout also works; feature-first maps one-to-one onto Gradle modules when you split.
  • State flows down, events flow up: a ViewModel exposes one immutable UiState as a StateFlow, the screen draws it and calls ViewModel functions. Composables never call repositories.
  • The repository is the single source of truth: it writes network results into Room and the UI observes Room through Flow, so the app works offline.
  • Every version lives in gradle/libs.versions.toml. Build files refer to libs.something, never to a hard-coded version.
  • Nothing secret ships in the APK. BuildConfig, resources and assets are readable by anyone who downloads the app; real secrets stay on your server.
  • Start with one app module and packages. Split into :core and :feature modules with convention plugins only when build times or team size make it worth it.
  • Test at the cheapest level that proves the behaviour: JVM unit tests first, Robolectric for Compose and screenshots, devices only for flows, migrations and accessibility.

At the top of the project

Open one in the explorer for the full story

Learn more on Sefism

Roadmaps, cheat sheets and projects that go with Android with Kotlin and Compose.

See 8 more
Checked against 20 official sources, October 2026. If something has changed, the docs win.Show sources

Picked from the other libraries by shared topics.

Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.

  • 1:1 Mentorship
  • Fresh Graduate Mentorship
  • Career Guidance

Brand deals, promos and partnerships: tauseeffayyaz@gmail.com