/github-repos

Multi-module, Kotlin, MVVM, Compose, Hilt, Use-cases, SQL-Delight, Retrofit

Primary LanguageKotlin

github-repos

Multi-module demo app that gets data from a Github api

List and Refresh

Search and Cache

Module Design

Module name Type Description
app Android Application MainActivity, BaseApplication, Theme, Hilt setup.
core Java/Kotlin Library Core business models and utils classes.
datasource Java/Kotlin Library Data-sources (network and cache) for the trending repos Module.
datasource-test Java/Kotlin Library Data-source test cases.
entities Java/Kotlin Library Domain models and classes for the trending repos Module.
usecases Java/Kotlin Library Use-cases for the trending repos Module.
ui-home Android Library UI components for the HomeList screen.
constants Java/Kotlin Library Random constants.
components Android Library Common Composables and Android utils

Architecture

Libraries and Decisions Overview

  • Kotlin - First class and official programming language for Android development.
  • Coroutines & Flow - For asynchronous and more..
  • Jetpack Compose - Modern toolkit for building native UI. It simplifies and accelerates UI development on Android.
  • SQLDelight - Generates typesafe Kotlin APIs from SQL and it supports a variety of dialects and platforms
  • Android Architecture Components - Collection of libraries that help you design quality, robust, testable, and maintainable apps.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
  • Dependency Injection -
    • Dagger-Hilt - Standard library to incorporate Dagger dependency injection into an Android application.
    • Hilt-ViewModel - DI for injecting ViewModel.
  • Retrofit - A popular type-safe HTTP client for Android and Java
  • Kotlin Serializer - Convert Specific Classes to and from JSON.Runtime library with core serialization API and support libraries with various serialization formats.
  • Coil-kt - An image loading library for Android backed by Kotlin Coroutines.
  • Mockito-Kotlin - Most popular Mocking framework for writing unit tests

build.gradle files

There are 3 types of build.gradle files.

  1. android application (app module)
  2. android-library-build.gradle
    • Android module that contains ui components.
  3. library-build.gradle
    • Pure java/kotlin library.

API

https://docs.github.com/en/rest/reference/repos#list-public-repositories