An android application that lists trending Github repositories.
The android app lets you:
- Users can view the most trending repositories in Android from GitHub.
- Users can search the trending repository
- Offline Support
Since there is no official API for Trending Repositories (it is one of the internal GitHub API’s), using GitHub Trending API
- Minimum SDK level 23
- Kotlin based + Coroutines for asynchronous.
- Dagger-Hilt for dependency injection.
- JetPack
- State - Notify domain layer data to views.
- SharedFlows - Notify one time events to the UI layer.
- Lifecycle - Dispose of observing data when lifecycle state changes.
- ViewModel - UI related data holder, lifecycle aware.
- Compose - Render UI.
- Architecture
- MVI Architecture [Clean Code] (Model - View - Intent)
- Repository pattern
- data ~ domain(use-cases) ~ presentation
- Coil - Loading Images for Jetpack Compose.
- Retrofit2 & OkHttp3 - Construct the REST APIs and Network data.
- Room Database - For offline caching of data
- Testing
- Turbine - For testing HotFlows
- Kotlin Coroutines Test
- Mockito - Mocking Framework for writing unit tests.
- MockWebServer - To mock the web server for APIs