- Currency is a currency exchange rates converter.
- Currency supports almost currencies
- It based on https://openexchangerates.org/
Open the app with the Internet -> The app will display all currencies and base currency above
- Type a number to the box -> The app will exchange and display all currencies
- Type a keyword on the search box -> The app will filter the currencies list by keyword It supports offline mode
- Should open project by Android Studio
- It can config
OPEN_EXCHANGE_RATES_SERVICE_APP_ID_PROD
if we have a specific key for Production build
I faced 3 problems when I build the app:
- App Architecture: I would like to make an app with architecture to easy maintenance and scalable and testable. So I decided on a modularization app and applied Clean Architecture, MVVM. More details below
- Dagger: There are many modules in the App Architecture, so it's hard to connect with each other. I created a BaseComponent in the Base module and every feature module need to be dependent to BaseComponent
- Paging list with online and offline mode: I used the Paging library in Android Jetpack and created a repository that responses to decide online (data remote by Retrofit) or offline (data local by Room)
I split the app into 2 modules:
- Base Module: BaseActivity, BaseFragment, BaseComponent,...
- Design System Module: Colors, Styles, Spacing, Icon Size, Font Size,...
- I used the modules to show, how I work with multi module application
- Smaller components are easier to maintain.
- Decrease build times
- Components with high cohesion can be re-used again.
- The team can decide architecture on own features
- Some libraries in the project: ViewBinding, Dagger, Retrofit. Jetpack components: ViewModel, Navigation, Paging, Room
- I don't have enough time to write all tests, so I try my best.