Kairos - the right, critical, or opportune moment.
Open Source cryptocurrency viewer for Android, written in Kotlin. MVP architecture. Icon by Maxim Basinski @ Flat Icon.
This project was mainly used as a playground outside work to validate architecture concepts, to learn working with new libraries and to explore various ideas & widgets. Currently the project is no longer under active development, as it achieved its initial purpose.
It is not published to the Google Play store, and there are no plans to publish it anytime soon.
The project is written fully in Kotlin and is structured in 3 layers: presentation, business & data. Each layer belongs to its own Gradle module.
The interactions between layers respects Bob C. Martin's dependency rule. Namely, "inner" layers know nothing about any of the outer layers (for instance, the data layer knows nothing about the business layer).
The presentation layer uses the MVP architecture. Presenters are persisted across configuration changes & are re-attached to the new view instance after a configuration change occurs.
Certain things have been left out intentionally (such as proper error handling).
Retrofit is used to fetch cryptocurrency data from CoinMarketCap's professional API. Only free to use endpoints are used, but an API key is required. Once you obtain your API key, add it to local.properties
:
coinMarketCapApiKey="<your key here>"
A read-to-use apk (for demo purposes) which uses a valid API-key can be found in the latest release.
Cryptocurrency icons are fetched via Glide from here.
The following tools/tech is used in KairosCrypto:
- Kotlin
- RxJava2 (with RxJava's Android extensions)
- RxRelay
- Dagger2 (without the Android extensions)
- Wheelbarrow (to store Dagger2 components/Presenters across config changes)
- Room
- Retrofit
- Gson
- Glide
- Material Progress
- Android SVG
- Leak Canary
- Jsoup
Feel free to contribute with ideas, bug reports or even features.