Currency converter sample app.
- Clone this repository and import into Android Studio
git clone https://github.com/IrynaTsymbaliuk/CurrencyConverter.git
- Create a Firebase project and register the app: https://console.firebase.google.com/
- Download and then add the configuration file (
google-services.json
) into the/androidApp
directory. - Create Remote Config parameter
API_KEY
- Kotlin - A modern programming language that makes developers happier.
- Koin - A lightweight pure Kotlin library for dependency injection.
- Ktor - Multiplatform asynchronous HTTP client built on Kotlin and Coroutines.
- Coroutines - For asynchronous work.
- Flow - A flow is an asynchronous version of a Sequence, a type of collection whose values are lazily produced.
- Firebase Remote Config - Firebase cloud service
- ViewModel - Screen level state holder.
- Jetpack Compose - Android’s recommended modern toolkit for building native UI
- Material3 - the latest version of Google’s open-source design system.
com.tsymbaliuk.currency.converter # Root
├── android # AndroidApp
├── di # Android module for DI
├── mvi # MVI related code
│ ├── base # Base MVI interfaces
│ ├── home # MVI components for Home screen
├── ui # UI related code
│ ├── composable.component # App design system components
│ ├── home # Home screen and viewmodel
│ ├── theme # App theme components (colorScheme, shapes, typography)
├── ios # iOSApp
├── shared # Shared module contains the core app logic used in both Android and iOS platforms
├── androidMain # Android-specific parts, including actual implementations
│ ├── network.datasource # Android actual implementation for network datasources
├── commonMain # Code that works on both platforms, including the expect declarations
| ├── di # Common module for DI
| ├── model # External representation models
| ├── network # Network related code
| | ├── datasource # Remote datasources (Firebase, Ktor client) and expect declarations
| | ├── model # Network representation models
| ├── repository # Handles online, offline and fake data sources.
| ├── usecase # Usecases and UseCaseProvider
├── iosMain # iOS-specific parts, including actual implementations
│ ├── network.datasource # iOS actual implementation for network datasources