/Movie-App

Developed an iOS app using a TMDb API to retrieve popular, trending and now showing movies and their details. Implemented user login, authentication, camera, UIImagePicker and other features.

Primary LanguageSwift


Movie App

  • Created a TMDB account for Movie List App (https://www.themoviedb.org) and get your own API key (https://developers.themoviedb.org/3/getting-started)
  • You can load movie data information with your API key with the following urls: Get Now Playing : http://api.themoviedb.org/3/movie/now_playing?api_key=<<api_key>> Get Popular : http://api.themoviedb.org/3/movie/popular?api_key=<<api_key>> Get Top Rated : http://api.themoviedb.org/3/movie/top_rated?api_key=<<api_key>> Get Upcoming : http://api.themoviedb.org/3/movie/upcoming?api_key=<<api_key>>
  • Each movie entry has a field called “poster_path” or , which is where you should download the picture for the movies. URI: http://image.tmdb.org/t/p/<>/<<poster_path>>"; // size : "w92", "w154", "w185", "w342", "w500", "w780", or "original".
  • Auto Layout constraint (No Storyboard, all in code)
  • Works in both X and smaller screen
  • Master/Detail flow
  • Master view is a tableview
  • Custom Cell implementation
  • Fetches movie list from TMDB server through Json downloading
  • Displays small image of poster, title
  • Downloads image from the poster link
  • Selects a movie by tapping a row, then loads the detail view of the design.
  • Deletes a movie with swiping action
  • Detail view
  • Customized detail view design
  • Includes:
    • Title, rating, description, ...
    • Rating is visual (not text)
    • Downloads movie detail from TMDB with id of Movie
    • Download images from the server (NO local image)
    • Uses 2 poster/backdrop images to manipulate >= 4 collection view items
  • MVC design pattern
  • Defined model for fetching Movie Json data
  • Movie list/movie detail
    • Is Decodable (No need to parse JSON data)
  • Uses Firebase for login authentication/reviews for movies
  • Movie information is downloaded from API
  • User credentials/profiles are created/saved in Firebase
  • Users' reviews are saved in Firebase and fetched into master/detail screens
  • Login Screen for login or regster / Profile Editing Screen
    • if successfully logged in, displays the list of movies fetched from API
    • if successfully registered, displays the profile screen to add profile image and other information
    • profile image can be selected and uploaded into firebase
    • if not selected, uses a default image for profile image
  • Master/Detail flow:
    • Master View (TableView)
    • poster icon, title, # of reviews for each movie if they exist
    • Detail View (either TableView or CollectionView)
    • There are multiple sections; for example, first section is for movie information from API and second section is for reviews from Firebase
    • Reviews can be written by multiple logged users
    • user name, review written by the user, # of like or dislike tapped by other users
    • review cell design:
      • user name
      • review text
      • like/dislike buttons and number for each
      • review can be edited/deleted only by author
    • Navigation bar must show user information (profile icon and name)
    • when tapped, Profile Screen should be launched to edit
  • Firebase Auth, Database, and Storage
    • Authentication
    • Database -- realtime update
    • Review data model
    • Storage to save profile images