A simple currency conversion application. A network request for a free resource open.exchangerate-api is used. The result will be saved to local storage (database). The database is refreshed when the data is out of date (the timestamp of the next data refresh on the server is stored).
- Tech-stack
- 100% Kotlin + Coroutines - perform background operations
- Retrofit - networking
- Jetpack
- Navigation - in-app navigation
- LiveData - notify views about database change
- Lifecycle - perform an action when lifecycle state changes
- ViewModel - store and manage UI-related data in a lifecycle conscious way
- Room - store offline cache
- Hilt - dependency injection
- Moshi - JSON converter
- Modern Architecture
- Single activity architecture ( with Navigation component)
- MVVM (presentation layer)
- Android Architecture components (ViewModel, LiveData, Navigation)
- Android KTX - Jetpack Kotlin extensions
- UI