This application only shows the iTunes' movie catalog.
(It's called meowvies bc i love cats and for pun (fun) huhu)
- Displays catalog from iTunes Movie
- Title
- Genre
- Price
- Artwork
- Long Description
- Displays all the available genre
- Sort movie list using selected genre
- Displays Recently Viewed Movies
- Able to handle negative scenario such us internet connectivity issue/ no internet at all.
Model-View-ViewModel architectural pattern was used in this project for these reasons:
- Separation of Concerns - to separate the user interface from the logic behind the process
- Readability - it is easier to understand the code because of the first reason
- Maintability - it is easier to maintain and add new features
- Scalability - there will be no problem for scaling if in the future there will be added new features in this app
- Testing/Debugging - easier to debug because of reason #1. It'll be easier also to add unit testing.
The application used Room as persistence library
- The application stores the recently viewed movie and displays it for these reasons:
- User can easily return to the viewed movie
- User can view it without the internet connection
Stated here the description of important files and structure
-
data
- local db and reusable model -
helper
- all the reusable model -
network
- API handler -
ui
- screens- Creating new screen must have these three main components
activity
- serves as the canvasfragment
- the main user interface (to make it reusable)viewmodel
- retrieving & processing of data
- Creating new adapter must separate these
adapter
- to prepare for populating data and inflating the layoutviewholder
- responsible for applying the ui content of the view
-
res
layout
activity_
for activity layoutfragment_
for fragment layoutitem_
for recyclerview's item layoutlayout_
for custom layout (toolbar/dialog.. etc..)
values
dimens
- used to have standardized ui dimensions (margin, padding, etc)colors
- added custom colorsstrings
- no hardcoded strings in xml / classesstyle
- all the ui element reusable custom style declared here
anim
- created basic animation for screen transitionfont
- used custom font: nunitosans
- Retrofit - REST client
- Lifecycle - Live Data and ViewModel
- Room - Persistence
- RXJava - Observe in API request task (clean and ez)
- Glide - Images from URL handler
- Blurry - Blur image (for aesthetic purposes lol)
- MinimumSDK - 21
- TargetSDK - 29
- iTunes provides a low-res artwork (artwork100 - 100x100) so gomenasai for the pixelated thumbnails/image.