{"adoption": {"forks": 139, "observed_at": "2026-08-28T04:05:05.442204+00:00", "stars": 1571}, "canonical_url": "https://ross.abutalabs.com/products/mkringprogressview", "card": {"archived": false, "artifact_type": "library", "description": "⭕️ Ring progress view similar to Activity app on Apple Watch", "domain": ["mobile-development", "frontend"], "enriched": true, "function": ["ui-components", "animation"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["maxkonovalov/MKRingProgressView"], "name": "maxkonovalov/MKRingProgressView", "platform": [], "pushed_at": "2023-05-04T21:46:36+00:00", "repo": "maxkonovalov/MKRingProgressView", "stars": 1571, "tags": ["progress-ring", "swift-ui-component", "gradient", "apple-watch-activity", "cocoapods", "swift-package-manager", "ios", "swift", "mobile"], "topics": ["ring", "progress", "progress-ring", "progress-circle", "progress-bar", "progress-view", "circle", "gradient", "conical-gradient", "activity", "apple", "ios", "swift"], "urls": [], "use_cases": ["show a circular progress ring in an iOS app", "replicate Apple Watch Activity rings in my app", "display animated gradient progress circle", "show fitness goal completion as a ring", "customize ring width and end cap style for a progress indicator", "display progress values over 100% as overlapping rings"], "what_it_is": "A Swift UI component library for iOS that renders circular ring progress views similar to the Activity app on Apple Watch. It supports animated progress, gradient colors, customizable ring width, and values above 100%.", "when_to_avoid": ["building for Android or cross-platform frameworks like Flutter or React Native", "you need linear or non-circular progress bars", "you need SwiftUI-native charts rather than a UIKit view"], "when_to_choose": ["building an iOS, tvOS, or watchOS app in Swift that needs ring-style progress indicators", "you want an Apple Watch Activity-style multi-ring display", "you need Interface Builder support and multiple package manager options"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mkringprogressview", "repo": "maxkonovalov/MKRingProgressView", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.442204+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:58:26.297482+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "953d38aa71896177bc715c16a561f3db37f2fc45dfbb17ffc5c0db5e5e81c23c", "fetched_at": "2026-08-28T04:05:05.442204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maxkonovalov/MKRingProgressView"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3968, "days_push": 1217, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}