Compose Multiplatform app which shows CryptoMarket coin prices.
- User real CoinGecko api.
- Clean and Simple Material UI.
- Use multi-module Gradle architecture.
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.
%%{
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
:feature:home:api --> :feature:coin-list:api
:feature:home:api --> :feature:coin-details:api
: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
This repository uses recommended Android App architecture.