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.