{"adoption": {"forks": 220, "observed_at": "2026-08-28T04:03:31.912890+00:00", "stars": 1085}, "canonical_url": "https://ross.abutalabs.com/products/layerplayer", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Layer Player explores the capabilities of Apple's Core Animation API", "domain": ["education", "developer-tools", "graphics", "mobile-development"], "enriched": true, "function": ["graphics", "animation", "developer-tools"], "health_score": 20, "homepage": "https://itunes.apple.com/app/layer-player/id949768742", "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["scotteg/LayerPlayer"], "name": "scotteg/LayerPlayer", "platform": [], "pushed_at": "2022-05-15T18:36:18+00:00", "repo": "scotteg/LayerPlayer", "stars": 1085, "tags": ["core-animation", "calayer", "demo-app", "swift", "apple-platforms", "interactive-explorer", "ios", "mobile"], "topics": [], "urls": [], "use_cases": ["learn how Core Animation layers work on iOS", "experiment with CAShapeLayer and CAEmitterLayer properties interactively", "see examples of CATiledLayer and CAReplicatorLayer usage in Swift", "reference sample code for CALayer animations", "understand differences between Core Animation layer subclasses", "teach or demo Core Animation concepts to a team"], "what_it_is": "An open-source iOS demo application that interactively explores Apple's Core Animation API, covering layer classes like CALayer, CAShapeLayer, CATextLayer, and CAEmitterLayer. Each layer type includes live controls so developers can manipulate properties and observe the animation effects in real time.", "when_to_avoid": ["you need a production animation library or UI framework", "you're targeting Android, web, or non-Apple platforms", "you need actively maintained code with recent updates"], "when_to_choose": ["you're an iOS/Swift developer learning or teaching Core Animation", "you want hands-on, interactive exploration of layer properties", "you need small working Swift examples of various CALayer subclasses"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/layerplayer", "repo": "scotteg/LayerPlayer", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "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:03:31.912890+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.912890+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:49:53.202391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7947fdb7b44ee6d17662ed21964fbec3261100a6945a6e5c2445068ef71ab5dd", "fetched_at": "2026-08-28T04:03:31.912890+00:00", "kind": "readme", "missing": false, "url": "https://github.com/scotteg/LayerPlayer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 4285, "days_push": 1571, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}