Phase 3 - 3 to 6 months

Become reliable in production codebases.

Goal: build apps that survive change. You now learn architecture, concurrency, dependency injection, persistence, testing, and release discipline.

What to learn

  • Recommended app architecture: UI layer, domain decisions, data layer, repositories, source of truth.
  • ViewModel, StateFlow, SharedFlow, coroutine scopes, cancellation, dispatchers, and structured concurrency.
  • Room migrations, DataStore, paging basics, cache invalidation, and sync strategy.
  • Dependency injection with Hilt and test-friendly boundaries.
  • Unit tests, coroutine tests, Compose UI tests, fake repositories, and screenshot/regression thinking.
  • Release basics: build variants, signing concepts, crash reporting, analytics events, and staged rollout discipline.

Build this project

Create an API-backed task manager with offline cache, authentication mock, filters, sync status, and tests around the repository and ViewModel behavior.

Compose UI
ViewModel
Repository
Room + API
Architecture proof:
UI -> ViewModel -> Use case or repository -> Local DB + Remote API

Test proof:
- ViewModel emits loading then data
- Network failure shows retry state
- Cached data appears offline
- Invalid mutation is rejected

Exit gate

  • You can explain where business logic belongs and why.
  • You can write tests before changing risky data or state logic.
  • You can reason about coroutine cancellation and lifecycle boundaries.
  • You can ship a release candidate with known risks and verification notes.
  • You can use the advanced guide sections on lifecycle, Room, Hilt, Coroutines, Flow, and testing.