Skip to content

A Jetpack Compose project to query all github users and display user's detail

License

Notifications You must be signed in to change notification settings

mirapham/githubuser

Repository files navigation

GitHubUser

A modern Android application built with Jetpack Compose to fetch and display GitHub users, along with detailed user information.


🚀 Overview

This project demonstrates a simple Android app written in Kotlin using Jetpack Compose. It interacts with the GitHub API to display a list of users, fetch detailed information, and cache user data locally for performance and offline use.


🌟 Features

  • Fetch GitHub Users with Pagination
    Fetch user data in batches of 20 items per page using the GitHub API.

  • User Details Page
    View detailed information about individual users by querying https://api.github.com/users/{username}.

  • Local Data Caching
    User data is stored in a local database to ensure seamless offline access. When the app is launched again, previously fetched user data is displayed instantly without the need to re-fetch from the remote server.

  • Unit Tests
    Unit tests ensure functionality and robustness.


📱 User Interface

The app's UI is built entirely with Jetpack Compose to provide a modern, responsive, and declarative design.

📹 Demo

Screen_recording_20250104_124717.webm

🛠️ Tech Stack

The app leverages modern Android development tools and frameworks:

  • Architecture: MVVM (Model-View-ViewModel)
  • UI: Jetpack Compose, Android paging3
  • Networking: Retrofit, OkHttp, Moshi
  • Local Storage: Room Database
  • Dependency Injection: Hilt
  • Asynchronous Programming: Coroutines + Kotlin Flow
  • Image Loading: Coil
  • Code Generation: KSP
  • Testing: JUnit, Mockito

🗂️ Modules Architecture

The app follows a modular architecture for scalability and maintainability.
Modules Architecture Diagram


About

A Jetpack Compose project to query all github users and display user's detail

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages