An Android app that allows you to access information about movies and select your favorites, fetching data from The Movie DataBase (TMDb) API.
Project made during the Android development course ViC - Vitoria Code by Picpay.
Register and get your (free) API key at TMDb.
Open the local.properties
file and paste:
apiKey=insert your api key here
Then run the app :)
- When opened, the app loads a list of the most popular movies
- Clicking on a movie loads details about that movie
- An error feedback is given if the API data load fails
- User can search for a specific movie through search mode or filter the movie list by selecting a genre
- Movies can be added to favorites and the user can access a list with of favorite movies
- ViewBinding is being used to reference layout views
- Koin for dependency injection
- Navigation component and Safe Args to handle navigating and passing data between fragments
- ViewModel being used so data survives configuration changes (like screen rotations)
- LiveData to encapsulate data that will be observed by the fragments
- RxJava is used to handle streams of data (from the API and from the database to the viewmodel)
- Retrofit to make the API call and Gson to convert json data to java objects
- Room to save the user's favorite movies in a local database
- Glide for image loading from url
The application has been organized into the following layers:
- presentation: classes that concern the UI and presentation logic, the activity, fragments, adapters and viewmodel.
- domain: contains the usecases, the repository interfaces and domain data objects.
- data: interacts with data sources (database, API services), contains repository implementation and data objects (response and db objects).