Demo | ||
---|---|---|
Discover the most popular and top rated movies playing. Movies data fetched using themoviedb.org API.
Main Screen | Favorites | Search |
---|---|---|
Movie Details | Trailers | Actor |
- 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.
Based on mvvm architecture and repository pattern.
- 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.
- 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.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Android Studio 3.2+
- Java JDK
Follow these steps if you want to get a local copy of the project on your machine.
https://github.com/islamelhady/movie-night.git
- In Android Studio, go to File -> New -> Import project
- Follew the dialog wizard to choose the folder where you cloned the project and click on open.
- Android Studio imports the projects and builds it for you.
- Add TheMovieDb API Key inside
gradle.properties
file.
API_KEY="Your API Key here"
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request
- Minimum SDK 19
- AndroidX - Previously known as 'Android support Library'
- Glide - for loading and caching images
- Retrofit 2 - for API integration.
- RxJava2 for implementing Observable pattern.
- Dagger 2 for dependency injection.
- Gson - for serialization/deserialization Java Objects into JSON and back
- OkHttp - for implementing interceptor, logging and mocking web server.
- LiveData
- ViewModel
- DataBinding
- CircleImageView
- Islam Elhady - LinkedIn - Islam Elhady
MIT License
Copyright (c) 2020 Islam Elhady