Skip to content

hfeky/movies-explorer

Repository files navigation

Movies Explorer

The past decade held a lot of movies, some left a mark and some were just a set of 24-60 pictures per second. This app is a Master-Detail Application to showcase those movies and the signature they left behind.

Project Description

  • Load movies list from a local JSON file.
  • Search movies by name.
  • Categorize the movies search results by year and each year category has the top 5 rated movies within.
  • Once a movie is selected from the search results, the user will be switched to a detailed view to unveil the following:
    • Movie Title
    • Movie Year
    • Movie Genres (if any)
    • Movie Cast (if any)
    • A list of pictures fetched from Flickr that matches the movie title as the search query

Screenshots

Specifications

  • Parse the movies that are inside the local JSON file.
  • Cache the movies in a local database to optimize loading time, reducing parsing overhead.
  • Implement movies search by name functionality.
  • Group the movies search results by year, and show the top 5 rated movies only for each year.
  • Optimize movies search and sorting performance.
  • Load movie images using Flickr Photos API.
  • Create a nice transition between Master and Detail views.
  • Create MotionLayout scenes.
  • Implement unit tests.
  • Implement integration tests.
  • Implement end-to-end tests (UI tests).
  • Document the unfamiliar code.

Architecture

MVVM (Model-View-ViewModel) Architecture is used in this project. It removes the tight coupling between each component. Most importantly, in this architecture, the children don't have direct reference to the parent; they only have reference by observables.

DBMS ER Diagram

Although one could just serialize/deserialize the movies genres and cast as a list, having one table only, creating separate tables for each is preferable to ensure scalability in the future, so that one could easily implement filter options by genre or cast for instance if needed later on.

Languages, Libraries and Tools Used

Requirements

  • Android Device with API 21 minimum
  • Create Flickr Photos API Key

Installation

  • Clone the app using Git or import it to Android Studio.

  • Create a credentials.properties file, and add it to the project root folder. Inside it add the Flickr Photos API key named as flickrApiKey.

Usage

  • To test the app, there is an APK build here that you can directly download and install.