{"adoption": {"forks": 371, "observed_at": "2026-08-28T04:09:27.723094+00:00", "stars": 5675}, "canonical_url": "https://ross.abutalabs.com/products/logincritter", "card": {"archived": false, "artifact_type": "library", "description": "An animated avatar that responds to text field interactions", "domain": ["mobile-development", "frontend", "web-design"], "enriched": true, "function": ["animation", "ui-components"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["cgoldsby/LoginCritter"], "name": "cgoldsby/LoginCritter", "platform": [], "pushed_at": "2019-12-17T15:36:54+00:00", "repo": "cgoldsby/LoginCritter", "stars": 5675, "tags": ["uipropertyanimator", "login-avatar", "swift-ui-animation", "demo-app", "ios", "swift", "mobile"], "topics": ["animation", "uipropertyanimator", "swift"], "urls": [], "use_cases": ["add an animated avatar to an iOS login screen", "make an avatar follow text input while typing", "learn how to use UIPropertyAnimator in Swift", "create playful login form animations", "implement state-based character animation in iOS"], "what_it_is": "An iOS Swift library and demo app featuring an animated bear avatar that reacts to text field interactions during login, built with UIPropertyAnimator. The avatar tracks typing, cursor position, and field focus with states like neutral, active, ecstatic, shy, and peek.", "when_to_avoid": ["you need an Android, web, or cross-platform solution", "you need a production-maintained component with recent updates", "you want a full authentication or form-handling library rather than a UI demo"], "when_to_choose": ["you want a delightful animated avatar for an iOS login form", "you want a practical example of UIPropertyAnimator-driven animation", "you need vector-based, individually animatable avatar parts in Swift"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/logincritter", "repo": "cgoldsby/LoginCritter", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "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:09:27.723094+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:27.723094+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:54:16.715561+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a76ec508b81a5bb47a2672b6addd63b36b4426db3489243d718578e76ecdf90d", "fetched_at": "2026-08-28T04:09:27.723094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cgoldsby/LoginCritter"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3055, "days_push": 2451, "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}}