{"adoption": {"forks": 138, "observed_at": "2026-08-28T04:04:13.787187+00:00", "stars": 1280}, "canonical_url": "https://ross.abutalabs.com/products/aruler", "card": {"archived": false, "artifact_type": "application", "description": "Mesure distance using apple ARKit", "domain": ["mobile-development", "computer-vision"], "enriched": true, "function": ["computer-vision", "graphics", "simulation"], "health_score": 62, "homepage": null, "language": "Swift", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["duzexu/ARuler"], "name": "duzexu/ARuler", "platform": [], "pushed_at": "2026-02-28T01:49:07+00:00", "repo": "duzexu/ARuler", "stars": 1280, "tags": ["arkit", "augmented-reality", "ruler", "measurement", "scenekit", "distance-measurement", "ios-tools", "ios", "swift", "mobile"], "topics": ["arkit", "ruler", "mesure-distance", "apple-arkit", "scenekit", "swift"], "urls": [], "use_cases": ["measure distance with iphone camera", "ar ruler app for ios", "measure length of objects using arkit", "augmented reality measuring tool", "measure vertical surfaces with arkit", "learn arkit hit testing and feature points"], "what_it_is": "An iOS augmented reality app that measures distances using Apple's ARKit and SceneKit. It uses plane detection and feature point hit-testing with statistical filtering to determine start and end points for measurements.", "when_to_avoid": ["you need measurement on Android or non-ARKit platforms", "you require high-precision professional measurement", "you need a library to embed in your own app rather than a standalone demo app"], "when_to_choose": ["you need a simple AR measuring tool on an ARKit-compatible iPhone (6s+, iOS 11+)", "you want a Swift/SceneKit reference implementation of AR distance measurement and feature-point hit testing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/aruler", "repo": "duzexu/ARuler", "role": "main", "score": 63}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "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:04:13.787187+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.787187+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:02:36.562107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f27b076630ae1cce9e0258d2b4531edaf9fdd8cf21b7125c4c32d918fbbd129c", "fetched_at": "2026-08-28T04:04:13.787187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duzexu/ARuler"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 69, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3344, "days_push": 187, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 63, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}