TMDB
Mar 10, 2021

TMDB App
Movie browser app
A showcase app from 2021 that lets cinephiles browse, search, and favourite titles, built to demonstrate modern iOS architecture in action.
MovieApp remains a demo project but is still referenced in code-reviews and workshops for its clean layering and Coordinator-driven navigation.
Overview
MovieApp pulls data from The Movie Database (TMDB) and wraps it in a responsive, UIKit-based UI:
Browse feeds for Popular, Now Playing, and Top-Rated films
Live search with debounced queries and instant results
Detailed sheets with poster art, cast & crew, synopsis, and runtime
Favourite any film for offline reference—synced across devices via Core Data
Features
Home & Browse
Infinite scrolling lists powered by UICollectionViewDiffableDataSource
Paginated TMDB requests that load additional pages as you near the bottom
Search
Debounced title search using Combine publishers
Real-time results grid and “no results” empty-state view
Movie Details
Hero poster, backdrop image, genres, release date, runtime, overview
Toggle to Favourite / Unfavourite (persists offline)
Favourites
Core Data cache for full offline access
Sort by title, release year, or date saved
Custom Styling
App-wide typography with embedded .ttf font family
SnapKit-driven adaptive layouts for portrait & landscape
Architecture
Clean Architecture with the Coordinator Pattern:
Presentation – UIKit screens bind to Combine-driven view-models
Domain – Pure Swift use-cases encapsulate business rules
Data – Repository orchestrates TMDB network calls, Core Data cache, and UserDefaults flags
Tech Stack
Area | Choice |
---|---|
Language | Swift |
UI | UIKit |
Layout | SnapKit |
Reactive | Combine |
Networking | URLSession + Combine (TMDB API) |
Persistence | Core Data & UserDefaults |
Lists | UICollectionViewDiffableDataSource + Compositional Layout |
Architecture | Clean Architecture & Coordinator Pattern |
Dependency Mgmt. | Swift Package Manager (SPM) |
Styling | Custom .ttf fonts |

