Skip to content

alexmprog/ThePets

Repository files navigation

ThePets

GitHub Logo

About

Compose Multiplatform application simply loads data from API and stores it in persistence storage (i.e. SQLite Database).

  • User real Cats and Dogs api.
  • Clean and Simple Material UI.
  • Use multi-module Gradle architecture.

Built With 🛠

Kotlin - First class and official programming language for Android development.
Kotlin Gradle DSL - Provides an alternative syntax to the traditional Groovy DSL for Gradle build system.
Coroutines - Kotlin Asynchronous or non-blocking programming.
Compose - The modern toolkit for building native Android UI.
Orbit - Redux/MVI-like library. It's so simple we think of it as MVVM+.
Voyager - Component helps you implement navigation.
Room - SQLite object mapping library.
Koin - The pragmatic Kotlin Dependency Injection framework.
Ktor - A type-safe Kotlin Multiplatform HTTP client.
Kotlin Serialization) - A modern JSON library for Kotlin and Java.
Coil - An image loading library for Android and Compose Multiplatform.

Module Graph

%%{
  init: {
    'theme': 'base',
    'themeVariables': {"primaryTextColor":"#F6F8FAff","primaryColor":"#5a4f7c","primaryBorderColor":"#5a4f7c","tertiaryColor":"#40375c","lineColor":"#f5a623","fontSize":"12px"}
  }
}%%

graph TB
  subgraph :common
    :common:logger["logger"]
    :common:utils["utils"]
  end
  subgraph :core
    :core:database["database"]
    :core:dispatchers["dispatchers"]
    :core:network["network"]
    :core:ui["ui"]
  end
  subgraph :data
    :data:cats["cats"]
    :data:dogs["dogs"]
  end
  subgraph :domain
    :domain:cats["cats"]
    :domain:dogs["dogs"]
  end
  subgraph :feature:cats
    :feature:cats:api["api"]
    :feature:cats:impl["impl"]
  end
  subgraph :feature:dogs
    :feature:dogs:api["api"]
    :feature:dogs:impl["impl"]
  end
  subgraph :feature:home
    :feature:home:impl["impl"]
    :feature:home:api["api"]
  end
  :core:database --> :common:logger
  :core:database --> :core:dispatchers
  :feature:home:impl --> :common:logger
  :feature:home:impl --> :common:utils
  :feature:home:impl --> :core:database
  :feature:home:impl --> :core:network
  :feature:home:impl --> :feature:cats:api
  :feature:home:impl --> :feature:dogs:api
  :feature:home:impl --> :feature:home:api
  :data:cats --> :common:utils
  :data:cats --> :core:database
  :data:cats --> :core:dispatchers
  :data:cats --> :core:network
  :data:cats --> :domain:cats
  :app --> :common:logger
  :app --> :core:database
  :app --> :core:dispatchers
  :app --> :core:network
  :app --> :core:ui
  :app --> :data:cats
  :app --> :data:dogs
  :app --> :domain:cats
  :app --> :domain:dogs
  :app --> :feature:cats:api
  :app --> :feature:cats:impl
  :app --> :feature:dogs:api
  :app --> :feature:dogs:impl
  :app --> :feature:home:api
  :app --> :feature:home:impl
  :core:network --> :common:logger
  :core:network --> :common:utils
  :data:dogs --> :common:utils
  :data:dogs --> :core:database
  :data:dogs --> :core:dispatchers
  :data:dogs --> :core:network
  :data:dogs --> :domain:dogs
  :domain:cats --> :common:utils
  :feature:dogs:impl --> :common:utils
  :feature:dogs:impl --> :core:ui
  :feature:dogs:impl --> :domain:dogs
  :feature:dogs:impl --> :feature:dogs:api
  :domain:dogs --> :common:utils
  :feature:cats:impl --> :common:utils
  :feature:cats:impl --> :core:ui
  :feature:cats:impl --> :domain:cats
  :feature:cats:impl --> :feature:cats:api

classDef kotlin-multiplatform fill:#C792EA,stroke:#fff,stroke-width:2px,color:#fff;
classDef android-application fill:#2C4162,stroke:#fff,stroke-width:2px,color:#fff;
class :core:database kotlin-multiplatform
class :common:logger kotlin-multiplatform
class :core:dispatchers kotlin-multiplatform
class :feature:home:impl kotlin-multiplatform
class :common:utils kotlin-multiplatform
class :core:network kotlin-multiplatform
class :feature:cats:api kotlin-multiplatform
class :feature:dogs:api kotlin-multiplatform
class :feature:home:api kotlin-multiplatform
class :data:cats kotlin-multiplatform
class :domain:cats kotlin-multiplatform
class :app android-application
class :core:ui kotlin-multiplatform
class :data:dogs kotlin-multiplatform
class :domain:dogs kotlin-multiplatform
class :feature:cats:impl kotlin-multiplatform
class :feature:dogs:impl kotlin-multiplatform

Loading

Architecture

This repository uses recommended Android App architecture. Image of Clean Architecture

About

Compose Multiplatform demo application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published