Skip to content

avelycure/CryptoStats

Repository files navigation

CryptoStats

App for getting information from Gemini API:

  • Coin value
  • Trades
  • Candles
  • 24h coin statistic
  • 24h high, low, open, close value of the coin

Project features

  • 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

Functionality

The entire application fits on one screen. It has different types of statistics for the selected cryptocurrency obtained from the Gemini API.

Caching

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

Charts

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

Handling internet connection

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.

Refresh data

If the user got an EmptyCacheException he can reload data with onSwipeRefresh

About

💱Application for getting cryptocurrency information from Gemini Api. RxJava3, Retrofit, Room, Koin, Mockito, Espresso, MpAndroidCharts

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages