Capstone Projects
Reading the curriculum gets you 40% of the way. Building these projects gets you the other 60%. Each project is designed to reinforce a specific stack — and together they cover every topic in the 20-module curriculum.
Project index
E-Commerce App
Catalog, cart, checkout, payments. Compose + Hilt + Room + Retrofit + MVI checkout flow. Primary modules: 01-06, 14-16.
Social Media App
Real-time chat, push, media upload. Firebase + FCM + Firestore + WebSocket + GraphQL. Primary modules: 06, 07, 16, 18.
Food Delivery App
Live tracking, maps, courier ETA, WebSocket status. Maps + Location + Foreground Service. Primary modules: 06, 08, 10.
Fitness Tracker
Sensors, Health Connect, Wear OS companion, offline-first. Primary modules: 05, 08, 12, 19.
News Aggregator
Paging 3, offline cache, WorkManager sync, Glance widget. Primary modules: 05, 06, 08, 10.
Graded milestones
Every project has six milestones. Treat each milestone as a PR so your GitHub history tells the story.
- 01
M1 — Skeleton
App + feature scaffolding, theme, navigation host, empty screens. Gradle convention plugins from Module 14.
- 02
M2 — Data layer
Retrofit/GraphQL/etc, Room schema, repository interfaces, fake API for dev. Offline-first reading working.
- 03
M3 — Primary flows
The 2-3 user journeys that define the app. Full MVVM/MVI with typed states and tests.
- 04
M4 — Advanced features
Real-time, push, widgets, sensors — whatever the project requires. Cross-module surfaces.
- 05
M5 — Production hardening
Crashlytics, baseline profile, R8 tuning, accessibility pass, RTL support, instrumentation tests.
- 06
M6 — Ship
CI/CD, Play internal track upload, SBOM, privacy declaration, release notes. Update your portfolio README.
Shared project scaffolding
Every project should start with the same skeleton:
myapp/
├── build-logic/ -> convention plugins (Module 14)
├── app/
├── core/
│ ├── design/ -> theme, tokens, reusable UI
│ ├── ui/ -> components: AppBar, EmptyState, ErrorView
│ ├── domain/ -> entities, use cases, repo interfaces
│ ├── data/ -> repository impls, DTOs, mappers
│ ├── network/ -> OkHttp, Retrofit/Apollo, auth interceptor
│ ├── database/ -> Room, DAOs, migrations
│ ├── datastore/ -> DataStore, proto schemas
│ ├── common/ -> Result, Dispatchers, logging
│ ├── testing/ -> fakes, Hilt test rules, fixtures
│ └── analytics/ -> analytics abstraction + Firebase adapter
├── feature/
│ └── [feature]/ -> one module per screen/feature
├── benchmark/ -> macrobenchmark suite (Module 10, 17)
└── baseline-profile/ -> baseline profile generator
Expected signals from each project
| Signal | Target |
|---|---|
| Crash-free rate | ≥ 99.5% on internal testers |
| Cold start P95 | < 1.5 s on mid-tier device (Pixel 7 equivalent) |
| Test count | ≥ 100 unit tests + ≥ 20 instrumentation tests |
| Code coverage | Domain + use cases ≥ 80%, overall ≥ 50% |
| CI pipeline | Green on main, < 12 min total runtime |
| Accessibility audit | Zero serious violations from Google A11y framework |
| Play Data Safety | Declared and matches actual SDK behavior |
How to submit for review
- Push to a public GitHub repo with a README that includes:
- Screenshots or GIFs of primary flows
- Architecture diagram (hand-drawn is fine)
- Build + test badges
- "Decisions" section explaining non-obvious choices
- Tag a release (
v1.0.0) with signed release notes - Ship to Play internal track — paste the tester link in the README
- Submit the repo URL via a PR to this curriculum's
showcases/folder (if hosting your own fork)
Next
Pick your first project:
- E-Commerce App — Compose, Hilt, Room, Retrofit, checkout state machine
- Social Media App — Firebase, FCM, real-time chat, media upload
- Food Delivery App — Maps, live location, foreground services, WebSocket
- Fitness Tracker — Sensors, Health Connect, Wear OS companion, offline-first
- News Aggregator — Paging 3, WorkManager sync, Glance widget