Xcoding with Alfian

Software Development Videos & Tutorials

Video Tutorial Series - Building SwiftUI MovieDB App with TMDb API

Alt text

In this video tutorial series, we'll learn on how to build a full iOS app that fetches data from TMDb API with features to display movie in list, show movie detail, and search movie. Please like, share, and subscribe to the YouTube Channel.

Part 1 - Introduction & API Setup


In this introduction video, i am going to show the demo of all the features that we'll build in the tutorial series using the simulator. We'll also take a dive into TMDb API and the endpoints for list, search, and movie detail.

Part 2 - Movie Model & API Client


In the second part of the tutorial series, we're going to build the Movie model, MovieService protocol, and implement the MovieStore class API Client to fetch data from TMDb API. We also learn to stub our model using a JSON file.

Part 3 - Movie List Screen


In the third part of the tutorial, we're going to build the Movie List Screen. Along the way, we'll build the view components for poster and backdrop image to display it in a horizontal carousel. Also, we'll learn to deal with downloading asynchronous data such as Image or JSON from the network by using Observable Object.

Part 4 - Movie Detail Screen


In the forth part of the tutorial, we'll build the view components for showing movie banner image, rating, overview, credits, and videos. Also, we'll learn on how to present a SafariViewController to play video from YouTube website in SwiftUI.

Part 5 - Movie Search Screen


We're going to build search movies feature into the app:

  • Use UISearchBar on SwiftUI and using the Combine framework to throttle observable query text typed by the user before making an API call.
  • How to use Tab View as container for views within the same hierarchy level.

Part 6 - Refactor MovieDB App from SwiftUI 1 to SwiftUI 3 with iOS 15 & Swift 5.5 Async Await


Here are the main tasks that we will implement to update to SwiftUI 3.0: - Fix existing bugs, improve efficiency and performance (e.g using the new LazyHStack instead of HStack for the movies carousel) - Use @StateObject property wrapper - Use Searchable, Refreshable, and Task Modifiers - Adopt Swift 5.5 Concurrent APIs such as Async Function, GroupTask, and MainActor. - Refactor current codebase to make the views more composable, modular, and reusable.