{"adoption": {"forks": 61, "observed_at": "2026-08-28T04:03:18.865382+00:00", "stars": 1034}, "canonical_url": "https://ross.abutalabs.com/products/autolayoutjs", "card": {"archived": true, "artifact_type": "library", "description": "Apple's Auto Layout and Visual Format Language for javascript (using cassowary constraints)", "domain": ["web-development", "frontend", "developer-tools"], "enriched": true, "function": ["ui-components", "graphics"], "health_score": 10, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["IjzerenHein/autolayout.js"], "name": "IjzerenHein/autolayout.js", "platform": ["browser", "cross-platform"], "pushed_at": "2021-12-01T19:15:22+00:00", "repo": "IjzerenHein/autolayout.js", "stars": 1034, "tags": ["autolayout", "visual-format-language", "vfl", "cassowary-constraints", "constraint-solver", "layout-engine", "unmaintained", "javascript", "nodejs"], "topics": ["cassowary-constraints", "constraint-solver", "autolayout", "layout-engine", "visual-format-language", "vfl", "javascript"], "urls": [], "use_cases": ["implement apple autolayout in javascript", "parse visual format language strings in the browser", "compute layout from constraint relationships", "use vfl syntax for responsive ui layout", "port ios constraint-based layouts to web apps"], "what_it_is": "A JavaScript library implementing Apple's Auto Layout and Visual Format Language (VFL) using the Cassowary constraint solver. It lets developers define UI layouts declaratively via constraint relationships and compute view positions and sizes.", "when_to_avoid": ["you need a maintained library - use lume/autolayout instead", "you just need simple CSS flexbox or grid layout", "you need a full UI component framework"], "when_to_choose": ["you need Apple's Auto Layout or VFL semantics in a JavaScript project", "you want declarative constraint-based layout with an extended VFL syntax including view stacks and z-indexing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/autolayoutjs", "repo": "IjzerenHein/autolayout.js", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "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:18.865382+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.865382+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:06:30.362156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4f8e60da71ad84e7d3bcc3cfe1c8e87fa378aa21193938fb380b6fa6bf07c65", "fetched_at": "2026-08-28T04:03:18.865382+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IjzerenHein/autolayout.js"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4108, "days_push": 1736, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}