Case Study

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.

Role Solo Developer
Stack Kotlin · Jetpack Compose
Platform Android
Watchlist app screenshot

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

Tech Stack

Kotlin · Jetpack Compose · TMDB API · Retrofit · Dagger-Hilt · MVI · Firebase

Screenshots

Watchlist screenshot 1
Watchlist screenshot 2
Watchlist screenshot 3
Watchlist screenshot 4
Next Project Devfesttttt