/movie-night

Sample Movie app using Hilt, RxJava3, View Binding, Jetpack Components( MVVM, Navigation Component, Room, Live Data), Retrofit

Primary LanguageJava

Demo
Fist 3 3

Movie Night

Discover the most popular and top rated movies playing. Movies data fetched using themoviedb.org API.

✨ Screenshots

Main Screen Favorites Search
Fist 3 3
Movie Details Trailers Actor
4 5 6

🌟 Features

  • Discover the most popular and the most rated movies
  • User can view and play trailers on video dialogue
  • Shows a list of reviews for each movie
  • Users can mark a movie as favorite in the details view by tapping a plus icon
  • Advanced uses of Room
  • Navigation Component
  • MVVM with Android Architecture Components(Room, LiveData, ViewModel)
  • Handle network status and network failures
  • ConstraintLayout(guidelines, barriers... etc)
  • Material design.

App Architecture

Based on mvvm architecture and repository pattern.

The app includes the following main components:

  • A local database that servers as a single source of truth for data presented to the user.
  • A web api service.
  • A repository that works with the database and the api service, providing a unified data interface.
  • A ViewModel that provides data specific for the UI.
  • The UI, which shows a visual representation of the data in the ViewModel.

App Packages

  • network - contains the api classes to make api calls to MovieDB server, using Retrofit.
  • db - contains the db classes to cache network data.
  • repository - contains the repository classes, responsible for triggering api requests and saving the response in the database.
  • di - contains dependency injection classes, using Dagger2.
  • ui - contains classes needed to display Activity and Fragment.
  • util - contains classes needed for activity/fragment redirection.

🚀 Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  • Android Studio 3.2+
  • Java JDK

Installing

Follow these steps if you want to get a local copy of the project on your machine.

1. Clone or fork the repository by running the command below

https://github.com/islamelhady/movie-night.git

2. Import the project in AndroidStudio, and add API Key

  1. In Android Studio, go to File -> New -> Import project
  2. Follew the dialog wizard to choose the folder where you cloned the project and click on open.
  3. Android Studio imports the projects and builds it for you.
  4. Add TheMovieDb API Key inside gradle.properties file.
API_KEY="Your API Key here"

🤝 How to Contribute

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

📃 Libraries used

Authors

MIT License

Copyright (c) 2020 Islam Elhady