A personal exploration of Metro DI (a Hilt alternative) and Jetpack Navigation 3 — testing how these frameworks compose in a real-world Android app.
The architecture mirrors the patterns I apply professionally on the Day One and Tumblr Android apps:
- Single-Activity, no Fragments, Kotlin only
- Per-feature Gradle modules split into
:api(public types) +:impl(implementation) - MVI ViewModels with pure reducers and effect-driven side effects
- Adaptive UI for phone and tablet form factors (NavigationBar / NavigationRail, list-detail two-pane)
- Jetpack Compose throughout
Built around a Pokédex powered by the public PokéAPI.