Project structure · Mobile
Android with Kotlin and Compose project structure
Opens with creditsFor 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.
How it grows
Each stage opens the explorer there
- 1Day 1What the scaffold and your first hour give you50 files and folders
- 2GrowingWhat a real app with features and tests adds+104 files and folders
- ProductionWhat running it for real users adds+45 files and foldersOpens with credits
- 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
- MyApp/
- .gradle/Gradle's local cache for this project.
- .idea/Android Studio project settings.
- .kotlin/Kotlin compiler caches and session files (Kotlin 2.x).
- app/The application module: your code, resources, tests and its build script.7 inside
- build/Root build output and reports.
- config/Configuration for static analysis tools.1 inside
- gradle/The version catalog, the Gradle wrapper and, later, dependency verification.2 inside
- .editorconfigIndentation, line length and ktlint rule settings shared by every editor.
- .gitignoreIgnores build output, local.properties, .gradle and personal IDE files.
- AGENTS.mdInstructions for AI coding agents: build commands, architecture rules, libraries.
- CLAUDE.mdClaude Code instructions; usually just `@AGENTS.md`.
- README.mdHow to build, test and release the app.
- build.gradle.ktsRoot build file: declares plugins with apply false for the modules to use.
- gradle.propertiesGradle and Android build flags: JVM memory, AndroidX, Kotlin code style.
- gradlewThe Gradle wrapper script for macOS and Linux.
- gradlew.batThe Gradle wrapper script for Windows.
- lefthook.ymlGit hooks: format staged Kotlin on commit, run detekt and unit tests on push.
- local.defaults.propertiesCommitted placeholder values for keys that each developer sets in local.properties.
- local.propertiesPath to the Android SDK on this machine, plus your local keys.
- settings.gradle.ktsProject name, plugin and dependency repositories, and the list of modules.
Learn more on Sefism
Roadmaps, cheat sheets and projects that go with Android with Kotlin and Compose.
- Roadmap· AndroidMobile development roadmapApps for Android and iOS
- RoadmapSoftware design and clean code roadmapOOP, SOLID, design patterns, refactoring
- RoadmapCoding with AI tools roadmapClaude Code, Cursor, Copilot, used well
- Cheat sheetMobile development cheat sheetApps for Android and iOS.
- Cheat sheetSoftware design and clean code cheat sheetOOP, SOLID, design patterns, refactoring.
- FYP idea· BeginnerOffline Farm Diary with Field Area Mapping for SmallholdersA beginner final year project that builds an offline mobile app for smallholder farmers to map each field by walking its edge, then log sowing, sprays, fertiliser, water, labour and harvest per field. It shows cost and yield per acre at season end, with an icon-led Urdu and English interface for phones with little data.
- FYP idea· IntermediateReal-User Performance Monitoring for Low-End Android Phones and Slow Mobile NetworksBuild a small, privacy-friendly script and dashboard that measures how fast a site really is for people on budget Android phones and congested mobile data, then explains which scripts, images and long tasks cause the slowness. Lab tests on a developer's laptop hide what most users in Pakistan and South Asia experience. The project ends with a measured case study on a real site.
- FYP idea· AdvancedOn-Device LLM Benchmark App for Budget Android Phones with Urdu Quality TestsBuild an Android app that runs small language models on the phone itself and measures what developers need to know before shipping on-device AI: speed, memory, battery drain, heating over a sustained run, crashes, and answer quality on Urdu and Roman Urdu tasks. Results from volunteers' phones feed a public table of how common budget models actually perform. Most published numbers come from flagship phones and English prompts, which tells a developer in Pakistan very little.
- QuestionHow do I choose between frontend, backend, mobile, cloud, cybersecurity, data and AI without trying them all for years?Do not try to pick the best field; pick the one whose daily problems you can tolerate on a bad day. Run a short, cheap experiment in two or three candidates, compare what you enjoyed doing rather than what sounded exciting, check the local job market, and commit for six to nine months.
See 8 moreShow fewer
- QuestionHow do I build a developer portfolio as a beginner with nothing to show?Start with two or three small but complete projects that solve a real problem, each with a clear README, screenshots and a live link or easy run steps. Put them on a simple one-page site or a tidy GitHub profile. Depth and finish matter far more than the number of projects or a fancy design.
- QuestionHow do I learn Git and GitHub properly instead of just copying commands?Learn the model first: commits are snapshots, branches are pointers, and remotes are copies. Then use Git daily on your own projects, practise a team workflow with branches and pull requests, and break things on purpose, such as merge conflicts, so you learn to recover calmly.
- QuestionWhich final year project will actually help me get a job?Pick an FYP that matches the role you want, solves a real problem for a real user, uses the tools that role uses, and that your group can finish and deploy. A modest idea done properly, with clean code, tests and a clear demo, helps far more in interviews than an ambitious idea that never fully works.
- Resource· CourseAndroid Basics with ComposeGoogle's free, self-paced course that teaches Android development from scratch with Kotlin and Jetpack Compose. Across eight units it covers your first app, building UI and state, lists and Material Design, navigation and architecture with ViewModel, networking with Retrofit, persistence with Room and DataStore, WorkManager, and interoperating with Views. It assumes no programming experience, takes about 100 hours, and needs a computer that can run Android Studio.
- Resource· GuideGuide to App Architecture (Android)Google's recommended architecture for Android apps: separation of concerns, driving the UI from data, a single source of truth and unidirectional data flow, organised into a UI layer with ViewModels and UI state, a data layer with repositories, and an optional domain layer, with dependency injection through Hilt. It explains the reasoning behind the patterns Android Basics with Compose teaches, and it is what Android teams expect you to know.
- Resource· GuideKotlin DocumentationThe official Kotlin documentation from JetBrains: a browser-based Kotlin tour for beginners, the full language reference, coroutines, and guides for Android, server-side and multiplatform development. It is the right starting point for anyone learning Kotlin before Android with Jetpack Compose, so that the language is not a second hurdle, and the reference settles questions about null safety, scope functions or generics.
- Resource· GuideAndroid Developers: Develop for AndroidThe official Android developer guides and reference: Jetpack Compose UI, data and files, permissions, navigation, background work with WorkManager, camera, location, connectivity, testing, performance tools and releasing your app, plus guides for phones, tablets, foldables, Wear OS, TV, cars and XR. It suits developers who have finished a beginner course such as Android Basics with Compose and need accurate, current answers while building real apps.
- Resource· GuideGitHub Actions DocumentationThe official documentation for GitHub Actions, GitHub's built in CI/CD and automation system: workflow syntax, triggers, runners, caching, artifacts, environments, secrets and OpenID Connect deployments to AWS, Azure and Google Cloud. Actions is free for public repositories on standard runners, so it is the CI tool most students and open source projects learn first. It suits developers setting up tests and deployments for the first time.
Checked against 20 official sources, October 2026. If something has changed, the docs win.Show sourcesHide sources
- Android: Guide to app architecture
- Android: Guide to app modularization
- Android Gradle Plugin release notes
- Android: Migrate to built-in Kotlin
- Android: Version catalogs
- Android: Configure build variants (flavors)
- Compose Bill of Materials
- Room
- Android: Navigation
- Android: Dependency injection with Hilt
- Android: Testing Compose layouts
- Compose Preview Screenshot Testing
- Android: Create Baseline Profiles
- Android: Network security configuration
- Android: Per-app language preferences
- Android: Sign your app
- Android: Shrink, obfuscate and optimize your app
- Google Play target API level requirements
- Android vitals
- Now in Android sample (modules and build-logic)
Best practices and checklists for this stack
Picked from the other libraries by shared topics.
Best practices
See all- React Native Best PracticesReact Native best practices for 2026: Expo and the New Architecture, fast lists, smooth animations, safe storage, deep links, accessibility and release builds.
- Flutter Best PracticesFlutter best practices for 2026: sound null safety, cheap build methods, layered architecture, smooth frames, go_router, accessibility, testing and safe releases.
- Software Testing Best PracticesTesting best practices for unit, integration and end-to-end tests: test design, test doubles, flaky tests, coverage and fast CI, with examples in TypeScript and Python.
Checklists
See all- App Store and Google Play Launch ChecklistLaunch a mobile app on the App Store and Google Play: accounts, build rules, review guidelines, privacy labels, Data safety, listing, in-app purchases, testing, crashes and staged rollout.
- Mobile App Security ChecklistCheck an Android or iOS app against OWASP MASVS: data storage, network security, authentication, platform interaction, code quality, resilience and privacy.
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