A simple app that converts the value of a currency to other currencies from ExchangeRate and Countries GraphQL API for the GraphQl APIs to get the list of currencies with their country flags; built to achieve Clean Architecture and Modularization via MVVM pattern (architecture), Kotlin Flow, Coroutines, RxJava, Compose.
My Currency Converter inspired by @theseuntaylor
To build this project, you require:
- Android Studio
- Gradle 8.3.2
- Kotlin 1.8.22
- Android Gradle Plugin 8.2.0
- Clean Architecture with MVVM (Uni-directional data model with UI states)
- GraphQl
- Rest API
- Multimodule
- Jetpack Libraries such as Navigation and others
- View components
- Kotlin Coroutines with Flow
- RxJava with Relays
- Dagger Hilt
- Kotlin Gradle DSL
- Compose (Compose with Flow, RxJava Observable, Navigation)
- Unit Test
- Plugin for managing dependencies
In no particular order
- Add in-memory and locale cache for rate particular to currencies to reduce Api request calls conversion
- Setup Ktlint on the project
- Migrate to KSP and K2 compiler.
- Use the Konsist library to write rules about the architecture and class conventions.
- Set up macro benchmark and fix memory leaks.
- Replace BuildSrc, migrate to using version catalogs and update App Dependencies.
- Add screenshot and UI/integration testing,
- Add widget
- Add live rates (5) and a view more screen.
- Add favourite currencies to have on the live rate list and potentially have notifications sent based on a price drop.
- Add a local profile screen with the possibility of having a remote profile in the future.
- Add features that utilize Locale, Accessibility, Notifications and Workmanager.
- Create a WearOs app showing live saved/favourite currency conversion rates.