Watchlist
An Android app for discovering and tracking movies and TV series, built on the TMDB API with a Material 3 interface in Jetpack Compose.
Overview
Watchlist gives users access to a database of over 2 million movies and TV shows through the TMDB API, with paginated search and a personal favourites list so people can build and keep track of what they want to watch.
Approach
The UI is built entirely in Jetpack Compose following Material 3 design principles, with Retrofit handling API calls to TMDB and Dagger-Hilt managing dependency injection across an MVI architecture.
One of the harder problems was favourites storage in Firebase. Firestore doesn't support storing values directly as data objects, so favourites had to be serialized to JSON before being written. Firestore also has no way to add a single entry directly to an existing document, which meant every add or remove of a favourite required reading the document first and writing back the full updated version — two network calls instead of one. Working within that constraint, rather than fighting it, shaped a good part of the data layer.
Key Features
- Paginated search across a 2M+ title database via the TMDB API
- Favourites management backed by Firebase
- Material 3 UI built with Jetpack Compose
Tech Stack
Kotlin · Jetpack Compose · TMDB API · Retrofit · Dagger-Hilt · MVI · Firebase
Screenshots