Git Product home page Git Product logo

movies-explorer's Introduction

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.

movies-explorer's People

Contributors

hfeky avatar

Stargazers

Abdelnasser Ahmed  avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.