TMDB

Mar 10, 2021

TMDB App

Movie browser app

GitHub

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



LEDGE.DIGITAL

© 2019–2025

Marko Lihter