Skip to main content

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.

  1. 01

    M1 — Skeleton

    App + feature scaffolding, theme, navigation host, empty screens. Gradle convention plugins from Module 14.

  2. 02

    M2 — Data layer

    Retrofit/GraphQL/etc, Room schema, repository interfaces, fake API for dev. Offline-first reading working.

  3. 03

    M3 — Primary flows

    The 2-3 user journeys that define the app. Full MVVM/MVI with typed states and tests.

  4. 04

    M4 — Advanced features

    Real-time, push, widgets, sensors — whatever the project requires. Cross-module surfaces.

  5. 05

    M5 — Production hardening

    Crashlytics, baseline profile, R8 tuning, accessibility pass, RTL support, instrumentation tests.

  6. 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

SignalTarget
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 coverageDomain + use cases ≥ 80%, overall ≥ 50%
CI pipelineGreen on main, < 12 min total runtime
Accessibility auditZero serious violations from Google A11y framework
Play Data SafetyDeclared and matches actual SDK behavior

How to submit for review

  1. 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
  2. Tag a release (v1.0.0) with signed release notes
  3. Ship to Play internal track — paste the tester link in the README
  4. Submit the repo URL via a PR to this curriculum's showcases/ folder (if hosting your own fork)

Next

Pick your first project: