This roadmap helps you learn Kotlin and Android development by building an Expense Tracker app over 12 weeks.
| Week | Focus | Learning Goals | Project Milestone |
|---|---|---|---|
| 1 | Kotlin Basics | • Variables (val/var), types• Control flow ( if, when)• Functions, lambdas |
Create a Kotlin console app that reads expenses from STDIN and prints totals. |
| 1 | OOP in Kotlin | • Classes, interfaces, enums • Data classes, inheritance • Extension functions |
Model Expense & Category as data classes; write unit tests for their logic. |
| 1 | Android Fundamentals | • Project structure • Activities & layouts (XML) • Resources & manifest |
Scaffold a new Android app: show a “Hello, Expense Tracker” screen. |
| 1 | Views & RecyclerView | • View hierarchy, ViewBinding • RecyclerView + Adapters |
Display a hard‑coded list of expenses in a scrollable list. |
| 1 | Jetpack Compose (optional) | • Composable functions • State & recomposition • Theming |
Re‑implement your expense list in Compose. |
| 1 | Data Persistence | • Room database • DAO & Entities • Migrations |
Add Room: save, load, delete expenses; connect them to your list. |
| 2 | Architecture & DI | • MVVM pattern • ViewModel & LiveData/Flow • Hilt for dependency injection |
Refactor to MVVM; inject your ExpenseRepository via Hilt. |
| 2 | Networking & Coroutines | • Retrofit + serialization (Moshi/Kotlinx) • Kotlin Coroutines + Flow |
Fetch currency rates from a public API and display converted amounts. |
| 2 | Authentication & Cloud Sync | • Firebase Auth (email/Google) • Firestore basics • Offline‑first patterns |
Let users sign in & sync their expenses to Firestore. |
| 2 | Background Work & Notifications | • WorkManager for periodic sync • Notifications & channels |
Schedule a daily summary notification of today’s expenses. |
| 2 | Testing (TDD) | • Unit tests with JUnit + MockK • Compose/Espresso UI tests • Test‑driven features |
Write tests first for adding/removing expenses; ensure 80% coverage on core modules. |
| 2 | Polish & Publish | • Theming (light/dark) • Accessibility • Play Store prep (app bundles, signing) |
Finalize UI polish, accessibility labels, generate signed APK, upload to Play Console (internal). |
- Block weekly time (e.g. 5–10 hours/week).
- Follow each week’s goals—watch one tutorial + read docs + write code/tests.
- Commit early and often: push to GitHub with meaningful commit messages.
- Demo each milestone: record a 1–2 minute screencast to show off features.
- Iterate: if a concept feels shaky, spend an extra day practicing small exercises.