App for getting information from Gemini API:
- Coin value
- Trades
- Candles
- 24h coin statistic
- 24h high, low, open, close value of the coin
- 100% Kotlin
- Functional & Reactive Programming with RXJava3 + RxAndroid
- Dependency injection with Koin
- Retrofit to fetch data from the Gemini API
- Cache local data with Room Persistence Library
- MPAndroid to plot nice charts
- Modern architecture (Clean Architecture, Model-View-ViewModel)
- Instrumental tests with Espresso
- Unit test with JUnit4 and Mockito
- Firebase: Crashlytics, GoogleAnalytics
The entire application fits on one screen. It has different types of statistics for the selected cryptocurrency obtained from the Gemini API.
According to the principles of Clean Architecture, data is handled on the Data Layer. There is a CryptoRepo class that can execute requests to the Gemini server using Retrofit and can save the result to the Room database. The work of determining from which source to receive data is performed by interactors
Currency changes can be seen on the charts that were built using the MPAndroid library. Changes over 24 hours are presented using a line graph.
Candles are represented using a candlestick chart
To work with internet connection there is a NetworkStatus class. If the user launches the app with internet connection everything is all right. But if the internet connection is lost user will get an error. Also if the user did not enabled the internet before first launch of the app, he will get an error that there is no cache data.
If the user got an EmptyCacheException he can reload data with onSwipeRefresh