The project's idea is to list trending projects from Github and then tap on one of them and show their details.
Requirements
- Write your application in Kotlin
- Ensure your application looks good on different screen sizes and densities
- Ensure your application supports Android API 23+
- Use good architecture and design patterns
- Use valuable external libraries that you are used to
- Use reactive programming
Bonus
- Filtering and ordering functionalities
- Unit tests
- Shared element transition or other animations (but only if they are functional to the user experience)
Trending_app_video.mp4
Since there is no official API for Trending Repositories (it is one of the internal GitHub API’s),
I have decided to use GitHub Search API and sort the repositories by their stars.
- Minimum SDK level 23
- Kotlin based + Coroutines for asynchronous.
- Dagger-Hilt (alpha) for dependency injection.
- JetPack
- LiveData - notify domain layer data to views.
- Lifecycle - dispose of observing data when lifecycle state changes.
- ViewModel - UI related data holder, lifecycle aware.
- Navigation Component - handle everything needed for in-app navigation.
- Data Binding - declaratively bind observable data to UI elements.
- Paging 3- load and display pages of data from a larger dataset
- Architecture
- MVVM Architecture (View - DataBinding - ViewModel - Model)
- Repository pattern
- Glide - loading images.
- Retrofit2 & OkHttp3 - construct the REST APIs and paging network data.
- Material-Components - Material design components like ripple animation, cardView.
- mockito-test library