Skip to content

IrynaTsymbaliuk/CurrencyConverter

Repository files navigation

CurrencyConverter

Currency converter sample app.


Installation ⚙️

  1. Clone this repository and import into Android Studio
git clone https://github.com/IrynaTsymbaliuk/CurrencyConverter.git
  1. Create a Firebase project and register the app: https://console.firebase.google.com/
  2. Download and then add the configuration file (google-services.json) into the /androidApp directory.
  3. Create Remote Config parameter API_KEY

Built With 🛠

  • 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.

Architecture 📐


Package Structure 📦

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

Contact 📩

[email protected]