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
appis the main entry point and wires together the dependencies.feature:exchangehandles the core exchange logic and business rules.feature:syncfetches the latest rates from the remote API and updates the database.feature:commissionapplies dynamic commission logic (e.g. first 5 free, 0.7% after).feature:balancemanages the user's wallet-like balance.feature:settingsstores preferences like the dark theme toggle.feature:transactionstores a history of completed exchanges.core:network,core:datastore,core:database, andcore:designsystemare reusable base modules shared across features.
Each feature module depends only on what it needs and interacts with shared core modules through interfaces.
