This is a demo app to showcase how to display a paged list of public Github projects, sorted by number of stars in descending order using the Github REST API. The app was designed and implemented trying to follow modern Android infrastructure, best development practices like Clean architecture and state of the art technical tools like Compose, Kotlin Flow and Hilt.
- Pagination of endless items using androidx paging3 in a list gallery via Remote mediator
- Detailed screen showing more complete information about a specific Github project
- Ability to search/filter out projects by name
-
UI
- Jetpack Compose declarative UI framework
- Coil Image Loading
- Material design
-
Tech/Tools
- Coroutines and Flow for async operations
- Hilt for dependency injection
- Jetpack
- Compose
- Navigation for navigation between composables
- ViewModel that stores, exposes and manages UI state
- Compose Destinations from Rafael Costa, a library for allowing an easier setup and usage of compose navigation under the hood
- Retrofit for networking
- AndroidX Paging3 library for paging through list of items in an infinite scroll style
- MVVM Architecture (Model - ComposableView - ViewModel)
- Clean architecture (Presentation - Domain - Data)
- Repository pattern
- Hilt - dependency injection
- Full App Modularization. Internal data and domain purposes and responsibilities spread over several modules (
core
for the business/domain logic,network
for interaction with REST api services andpersistence
for local storage).