


ConversionApp is a currency exchange application that allows users to convert between currencies using up-to-date exchange rates. It syncs rates from a remote API, applies commissions based on specific rules, and keeps track of user balances — all in real-time.
- Jetpack Compose – Modern UI toolkit for native Android
- Koin – Lightweight dependency injection framework
- Ktor Client – HTTP client used for fetching exchange rates from a remote API
- Room – Local database for persisting currency rates
- DataStore – Store user preferences and app state persistently
ConversionApp follows a scalable and testable architecture:
- MVVM (Model-View-ViewModel) – For clear separation of concerns between UI and business logic
- Clean Architecture – Divides code into layers (UI, Domain, Data) to enforce boundaries and decoupling
- Layer Per Feature – Each feature (e.g., Exchange) has its own independent layers
- Modular Approach – Features and core layers are separated into modules for better reusability, testing, and build performance
app
is the main entry point and wires together the dependencies.feature:exchange
handles the core exchange logic and business rules.feature:sync
fetches the latest rates from the remote API and updates the database.feature:commission
applies dynamic commission logic (e.g. first 5 free, 0.7% after).feature:balance
manages the user's wallet-like balance.core:network
,core:datastore
,core:database
, andcore:designsystem
are reusable base modules shared across features.
Each feature module depends only on what it needs and interacts with shared core modules through interfaces.