- Syncing every 5 second with back-end to fetch fresh currency rates
- Handling lifecycle of flow and coroutine for stop syncing when app goes in the background and starting syncing when comes in foreground
- Handling loading, error, success state of api call and notify user about these states with option to retry
- Providing a way to calculate commissions dynamically with different strategies (solved with design patterns)
- Still works even when currencies added in the server side and this currency also will be add in the application dynamically
- Notifies user about every faild transaction with different senarioes
- Flexible wallet with alot of currencies
- Wrote in Clean-MVVM architecture to be scalable, flexible, clean and easy to maintain
- Kotlin
- Coroutines and Flow
- Room Database
- Retrofit and Okhttp
- Dagger2