Skip to content

A GitHub Demo Android app, featuring MVVM Architecture and Jetpack Compose.

Notifications You must be signed in to change notification settings

khyatikothadia/GithubDemoApp

Repository files navigation

GitHubDemoApp with MVVM Architecture & Jetpack Compose

The GitHub Demo Android app is a mobile application designed to interact with the public GitHub API, providing users with detailed information about a specific GitHub user.

Features

  • User Lookup: Input a GitHub user's ID to see their avatar and name.
  • Repository List: Explore the user's public repositories through a scrollable list, showcasing repository names and brief descriptions.
  • Repository Detail: Dive deeper into a specific repository by selecting it, revealing comprehensive details on a dedicated detail screen.
  • Animated Interaction: Enjoy a visually engaging experience with animations that present user and repository information in an intuitive and lively manner.

Tech Stack

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - For concurrency and asynchronous tasks
  • Flow - A asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • StateFlow - A live data replacement.
  • Dependency Injection
    • Hilt - An easier way to incorporate Dagger DI into the Android application.
  • Android Architecture Components
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Coil - An image loading library for Android backed by Kotlin Coroutines.
  • Mockk - For Mocking and Unit Testing

Architecture Patterns

1. MVVM

MVVM architecture is a Model-View-ViewModel architecture that removes the tight coupling between each component. It is a design pattern that separates the user interface (View) from the underlying data and business logic (Model). Most importantly, in this architecture, the children don't have the direct reference to the parent, they only have the reference by observables.

2. Repository

The Repository Pattern is a design pattern commonly used in software development to abstract and centralize data access logic. It provides a clean and organized way to manage the interaction between the application's business logic and the data sources (such as databases, web services, or APIs).

  • Abstracts and centralizes data access logic, decoupling business logic from storage details.
  • Separates data access, making code modular. Changes are confined to the repository, easing maintenance.
  • Enhances testability by separating concerns. Mocking repositories in tests isolates business logic.
  • Facilitates easy switching between data sources (e.g., local database to remote API).

Releases

No releases published

Packages

No packages published

Languages