{"id":15132465,"url":"https://github.com/shorthouse/CoinWatch","last_synced_at":"2025-09-29T00:32:14.063Z","repository":{"id":176536478,"uuid":"655260745","full_name":"shorthouse/CoinWatch","owner":"shorthouse","description":"CoinWatch is an Android cryptocurrency app providing real-time coin prices, price histories, and market data, built using the latest Android architecture components","archived":false,"fork":false,"pushed_at":"2025-01-10T11:37:42.000Z","size":1924,"stargazers_count":131,"open_issues_count":4,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-01-10T12:32:53.674Z","etag":null,"topics":["android","android-clean-architecture","android-jetpack","bitcoin","compose","coroutines","crypto","cryptocurrency","finance","hilt","jetpack-compose","jetpack-compose-example","junit","kotlin","kotlin-coroutines","ktlint","material-design-3","mvvm","retrofit","room-persistence-library"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shorthouse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-18T11:28:46.000Z","updated_at":"2025-01-10T11:37:46.000Z","dependencies_parsed_at":"2023-10-14T21:25:24.119Z","dependency_job_id":"11146cd8-0bab-4b3e-8dad-a3931bd18fe7","html_url":"https://github.com/shorthouse/CoinWatch","commit_stats":null,"previous_names":["shorthouse/cryptodata","shorthouse/coinwatch"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shorthouse%2FCoinWatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shorthouse%2FCoinWatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shorthouse%2FCoinWatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shorthouse%2FCoinWatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shorthouse","download_url":"https://codeload.github.com/shorthouse/CoinWatch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234575225,"owners_count":18854925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-clean-architecture","android-jetpack","bitcoin","compose","coroutines","crypto","cryptocurrency","finance","hilt","jetpack-compose","jetpack-compose-example","junit","kotlin","kotlin-coroutines","ktlint","material-design-3","mvvm","retrofit","room-persistence-library"],"created_at":"2024-09-26T04:04:46.893Z","updated_at":"2025-09-29T00:32:08.535Z","avatar_url":"https://github.com/shorthouse.png","language":"Kotlin","funding_links":[],"categories":["\u003ca name=\"app-projects\"\u003e\u003c/a\u003e App Projects"],"sub_categories":["UI"],"readme":"\u003cp align=\"center\"\u003e\n   \u003cimg src=\"https://github.com/user-attachments/assets/3cc55b66-c2e5-43b1-a56e-60574e8c79bc\"/\u003e\n\u003c/p\u003e\n\n# CoinWatch\n[![Android Weekly](https://img.shields.io/badge/News-Android%20Weekly%20%23636-040273?logo=android\u0026logoColor=%233DDC84)](https://androidweekly.net/issues/issue-636)\n[![Android CI Workflow](https://github.com/shorthouse/CoinWatch/actions/workflows/android.yml/badge.svg)](https://github.com/shorthouse/CoinWatch/actions)\n[![Release](https://img.shields.io/badge/Release-1.2.9-1397CB)](https://github.com/shorthouse/CoinWatch/releases)\n[![License Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-%23820e82)](https://www.apache.org/licenses/LICENSE-2.0)\n[![Medium shorthousedev](https://img.shields.io/badge/Medium-shorthousedev-%23FF5F1F)](https://medium.com/@shorthousedev)\n[![GitHub shorthouse](https://img.shields.io/badge/GitHub-shorthouse-%23D70040)](https://github.com/shorthouse)\n[![ktlint](https://img.shields.io/badge/ktlint%20code--style-%E2%9D%A4-FF4081)](https://pinterest.github.io/ktlint/)\n\n**CoinWatch** is an Android cryptocurrency app providing real-time coin prices, price histories, and market data.\n\nThe app is built using the latest [Android architecture components](https://developer.android.com/topic/architecture/recommendations) - resulting in a scalable, modularised and testable app.\n\n# 📱 Download\n\u003ca href='https://play.google.com/store/apps/details?id=dev.shorthouse.coinwatch\u0026pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'\u003e\n    \u003cimg alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png' height='80'/\u003e\n\u003c/a\u003e\n\n# 🛠 Built With \n- Kotlin\n- Jetpack Compose\n- Retrofit\n- Coil\n- OkHttp\n- Coroutines\n- Flow\n- Hilt\n- ViewModel\n- Timber logging\n- Room\n- Material Design 3\n- Static code analysis using Ktlint\n\n# 🧱 Architecture \nThe design of CoinWatch follows a few key principles:\n1. Unidirectional Data Flow (UDF) - State flows in one direction, and events that modify the data flow in the opposite direction.\n2. Single Source of Truth (SSOT) - The SSOT is the owner of data, and only the SSOT can modify or mutate it.\n3. Drive UI from immutable data models - App data is contained within persistent data models and drives UI components.\n\nA high-level overview of the app's architecture is displayed below. The architecture follows [Google's official architecture guidance](https://developer.android.com/topic/architecture).\n\n\u003cp align=\"center\"\u003e\n   \u003cimg src=\"https://github.com/shorthouse/CoinWatch/assets/73708076/d931301f-80da-4cb7-9824-bdf1d4cdfaa3\" width=\"750\"\u003e\n\u003c/p\u003e\n\n# ⭐ Features\n- Get a list of real-time prices and price changes of the top cryptocurrencies\n- Analyse coins in detail with animated price history graphs and market stats data \n- Search through thousands of cryptocurrencies by name or symbol\n- Create a personalized list of favourite cryptocurrencies \n\n# 🧬 Testing \nCoinWatch features an extensive test suite, using the following:\n - JUnit for local tests\n - Jetpack Compose testing APIs for instrumented tests\n - Truth for assertions\n - MockK for mocks\n\n# 🤝 Contributing \nContributions to the project are welcome and highly encouraged! To get started, please check out the [contributing guidelines](https://github.com/shorthouse/CoinWatch/blob/main/CONTRIBUTING.md).\n\n# 📥 Contact \nDo you have ideas to improve the app or a query for the developer?\n\nPlease get in touch via email - shorthousedev@gmail.com\n\n# ❤️ Acknowledgements \n - Coin data provided by [CoinRanking API](https://developers.coinranking.com/api)\n - Empty state images provided by [unDraw](https://undraw.co/illustrations)\n\n# 🔖 License \n```\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshorthouse%2FCoinWatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshorthouse%2FCoinWatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshorthouse%2FCoinWatch/lists"}