Git App
An Android application consuming the GitHub API to search for users on Github, display their followers, following and repositories. The project is built with Compose, MVVM pattern as well as other architectural components and libraries.
Table of Contents
Installation
This project uses the Gradle build system. To build this project, use the gradlew build
command or use "Import Project" in Android Studio.
You can find the latest apk in the Release section, or you can download from here
UserFlow
The app shows a search screen, on the home page with a search bar. A user is able to search for a user using their username. The app displays the user's profile. When a user clicks on the profile, the app navigates to a detail screen, which displays the user's followers, following and repositories. When a user clicks on a repository, they are able to view the repository's description, stars, fork and watchers count and the topics under the repository.
Screenshots
Recording
vid.mp4
Architecture
The app is built using the MVVM architectural pattern. The app has composable screens that communicates to ViewModel which in turn communicates to the usecase which communicates with Repository to get data.
Libraries
- Jetpack
🚀 - Viewmodel - Manage UI related data in a lifecycle conscious way
- Compose - A modern declarative way to build android ui
- Navigation - Handle everything needed for in-app navigation.
- ViewModel - Easily schedule asynchronous tasks for optimal execution.
- Room - Persistence library for Android.
- Retrofit - Type-safe HTTP client and supports coroutines out of the box. Used for the network calls.
- Gson - Used to convert JSON to Java/Kotlin classes for the Retrofit
- Lottie Animation Library - A library for creating animated views and animations.
- Accompanist Library - A library for building Android apps with the Jetpack Compose framework.
- okhttp-logging-interceptor
- logs HTTP request and response data.
- kotlinx.coroutines - Library Support for coroutines
- Hilt - Used for Dependency injection
- Coil - Allows for fetching and displaying of images in the composables