This application is a simple implementation of the popular images feature of 500px which using the 500px API built using modern Android development strategies focusing on the following key aspects:
- Code structuring as per clean Architecture
- Using MVVM Pattern as per Google's recommendation
- Android Architecture Components (LiveData, ViewModel, Navigation)
- Kotlin features (Lambdas, Extension functions, typealias, sealed class and Coroutines)
The app features a 2 screen navigation
-
List screen displaying popular images in a paginated fashion
-
Details screen showing the details of the image on click on the image in the list screen
Navigation between the screens has been done using the Jetpack Navigation library and the following is its nav graph:
Libraries The App uses libraries and tools used to build Modern Android application, mainly part of Android Jetpack
- Kotlin first
- Coroutines Flow API
- Android Architecture Components
- Android desugaring for Java 8+ APIs
- Retrofit
- Moshi
- Picasso
- Hilt for dependency injection
- Android KTX features
- MockK for unit testing
The app can be further improved with the addition of the following features
- Dynamic image sizes using multiple ViewHolders for different image sizes instead of current GridLayoutManager implementation
- Espresso Tests