- Androidx
Androidx is replacing the Android support Library. So it's naturally that I have to implement it.
- Google Material
I used Google Material for a better design.
- Coroutines
Definitely the best library to work with asynchronous stuff.
- Retrofit2
In my opinion the best library to deal with network call.
- okHttp
Used to handle connection Issue and intercept api error.
- Glide
The best library to render picture.
- Timber
The best library to log event instead of the standard Log library.
- Dagger2
One of the best way to deal with dependencies. Dagger makes easy and fast the injection of dependency.
- Room
The best library to make data persistent in a SQLite database.
I decided to implement a MVVM architecture, because according to my own experience and the recommendation of Google, this is the most advanced, flexible and stable architecture that exists.
When I planned the app before start coding, I wanted to stay simple and pragmatic, I didn't want to include some useless stuff like a Splash screen because no loading time is needed for this app even if a splash screen is sometimes used for a good design.
I tried to provide a design which is nice to watch but to do not overload it.