{"repo":"shorthouse/CoinWatch","free":true,"listed":false,"github":"https://github.com/shorthouse/CoinWatch","clone":"git clone https://github.com/shorthouse/CoinWatch.git","description":"CoinWatch is an Android cryptocurrency app providing real-time coin prices, price histories, and market data, built using the latest Android architecture components","language":"Kotlin","stars":146,"topics":["android","android-clean-architecture","coroutines","crypto","cryptocurrency","finance","hilt","jetpack-compose","junit","kotlin"],"license":null,"category":"mobile-apps","readme_excerpt":"CoinWatch CoinWatch is an Android cryptocurrency app providing real-time coin prices, price histories, and market data. The app is built using the latest Android architecture components - resulting in a scalable, modularised and testable app. 📱 Download 🛠 Built With - Kotlin - Jetpack Compose - Retrofit - Coil - OkHttp - Coroutines - Flow - Hilt - ViewModel - Timber logging - Room - Material Design 3 - Static code analysis using Ktlint 🧱 Architecture The design of CoinWatch follows a few key principles: 1. Unidirectional Data Flow (UDF) - State flows in one direction, and events that modify the data flow in the opposite direction. 2. Single Source of Truth (SSOT) - The SSOT is the owner of data, and only the SSOT can modify or mutate it. 3. Drive UI from immutable data models - App data is contained within persistent data models and drives UI components. A high-level overview of the app's architecture is displayed below. The architecture follows Google's official architecture guidance. ⭐ Features - Get a list of real-time prices and price changes of the top cryptocurrencies - Analyse coins in detail with animated price history graphs and market stats data - Search through thousands of cryptocurrencies by name or symbol - Create a personalized list of favourite cryptocurrencies 🧬 Testing CoinWatch features an extensive test suite, using the following: - JUnit for local tests - Jetpack Compose testing APIs for instrumented tests - Truth for assertions - MockK for mocks 🤝 C","default_branch":null,"files":null,"tree":[],"storefront":"/r/shorthouse","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/shorthouse/CoinWatch/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}