Skip to content

alexmprog/CryptoCoins

Repository files navigation

CryptoCoins

GitHub Logo

About

Compose Multiplatform app which shows CryptoMarket coin prices.

  • User real CoinGecko 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.
Decompose - Kotlin Multiplatform library for breaking down your code into lifecycle-aware business logic components.
Kodein - Useful dependency injection / retrieval container for Kotlin.
Ktor - A type-safe Kotlin Multiplatform HTTP client.
Kotlin Serialization) - A modern JSON library for Kotlin and Java.

Module Graph

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

graph TB
  subgraph :common
    :common:utils["utils"]
    :common:logger["logger"]
  end
  subgraph :core
    :core:dispatchers["dispatchers"]
    :core:network["network"]
    :core:ui["ui"]
  end
  subgraph :data
    :data:coins["coins"]
  end
  subgraph :domain
    :domain:coins["coins"]
  end
  subgraph :feature:coin-details
    :feature:coin-details:api["api"]
    :feature:coin-details:impl["impl"]
  end
  subgraph :feature:coin-list
    :feature:coin-list:api["api"]
    :feature:coin-list:impl["impl"]
  end
  subgraph :feature:home
    :feature:home:impl["impl"]
    :feature:home:api["api"]
  end
  :feature:coin-details:api --> :domain:coins
  :feature:home:impl --> :domain:coins
  :feature:home:impl --> :feature:coin-details:api
  :feature:home:impl --> :feature:coin-list:api
  :feature:home:impl --> :feature:home:api
  :data:coins --> :common:utils
  :data:coins --> :core:dispatchers
  :data:coins --> :core:network
  :data:coins --> :domain:coins
  :app --> :common:logger
  :app --> :core:dispatchers
  :app --> :core:network
  :app --> :core:ui
  :app --> :data:coins
  :app --> :domain:coins
  :app --> :feature:coin-details:api
  :app --> :feature:coin-details:impl
  :app --> :feature:coin-list:api
  :app --> :feature:coin-list:impl
  :app --> :feature:home:api
  :app --> :feature:home:impl
  :feature:coin-details:impl --> :common:utils
  :feature:coin-details:impl --> :core:dispatchers
  :feature:coin-details:impl --> :core:ui
  :feature:coin-details:impl --> :domain:coins
  :feature:coin-details:impl --> :feature:coin-details:api
  :feature:coin-list:impl --> :core:ui
  :feature:coin-list:impl --> :domain:coins
  :feature:coin-list:impl --> :feature:coin-list:api
  :domain:coins --> :common:utils
  :feature:home:api --> :domain:coins
  :core:network --> :common:logger
  :core:network --> :common:utils
  :core:ui --> :common:utils
  :feature:coin-list:api --> :domain:coins

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 :feature:coin-details:api kotlin-multiplatform
class :domain:coins kotlin-multiplatform
class :feature:home:impl kotlin-multiplatform
class :feature:coin-list:api kotlin-multiplatform
class :feature:home:api kotlin-multiplatform
class :data:coins kotlin-multiplatform
class :common:utils kotlin-multiplatform
class :core:dispatchers kotlin-multiplatform
class :core:network kotlin-multiplatform
class :app android-application
class :common:logger kotlin-multiplatform
class :core:ui kotlin-multiplatform
class :feature:coin-details:impl kotlin-multiplatform
class :feature:coin-list:impl kotlin-multiplatform

Loading

Architecture

This repository uses clean architecture with api/impl multi-modular approach.

  1. Common and Core modules contain some generic logic such as coroutines dispatcher provider, logging, network config and etc
  2. Domain modules contain domain specific logic - clean architecture domain modules.
  3. Data modules contain data specific logic - clean architecture data modules.
  4. Feature modules contain feature specific logic - clean architecture feature presentation modules. Each feature module split into 2 api/impl modules to support scaling inside large project.

About

Compose Multiplatform app which shows CryptoMarket prices

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors