Skip to content

iNoor72/TMDB-SwiftUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🍏 The Movie Database - iOS

The Movie Database is my implementation for an iOS app to show movies.

Description

The Movie Database is an iOS app to fetch and present popular movies and their details from TMDB website.

Getting started

To run the project, you simply open the project and wait for packages to be downloaded

The app requires an API key from TMDB website to run it, please add you API key in the AppConstants file to the "APIKey" variable shown in the following screenshot:

Screenshot 2024-03-10 at 7 49 17 PM

Video overview

Simulator Screen Recording - iPhone 15 Pro - 2024-03-10 at 19 41 15

Tech stack

  • Swift and SwiftUI for the design.
  • SPM for handling packages.
  • Used MVVM UI Design Pattern applying Clean Architecture principles (Interactor/UserCase, Repository, Layers) for scalability and testablity. For more info, click here to view my article about applying Clean Architecrture principles to any UI Design Pattern.
  • Core Data for database caching.

Main Features

  • List the popular movies for the user to browse them.
  • Custom SwiftUI views for common usage.
  • Detailed cell to show the lead image, headline, and the type of the article.
  • Detailed view for the user to show the details of the desired movie.
  • MVVM architecture with Clean Architecture principles and Single Responsibility everywhere!
  • Error handling for network and fetching errors.

Bonus features:

  • Pagination for loading movies.
  • Implemented In-Memory caching for images to enhance UX.
  • Implemented database caching using Core Data stack built from scratch.
  • Used DTO for providing data from Interactor to Presenter to View.
  • Mocking for the network and database layers.
  • Unit testing for the main layers (Network & Database) using Mocks.

Packages

  • Alamofire: Used for all of the heavy work of networking in the app.

Project status

The project is completed in what was mentioned in the requirements document. However, due to time constraint, it could have been done with more Unit & Integration testing and more detailed error handling.

Project Branches

I used the "develop" branch all the time to develop the features and then made PRs from each sub-branch after I complete a milestone to be merged to the develop branch and finally to the main branch.

About

An iOS app to fetch movies from TMDB website.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages