{"adoption": {"forks": 148, "observed_at": "2026-08-28T04:06:51.271971+00:00", "stars": 2434}, "canonical_url": "https://ross.abutalabs.com/products/pinlayout", "card": {"archived": false, "artifact_type": "library", "description": "Fast Swift Views layouting without auto layout. No magic, pure code, full control and blazing fast. Concise syntax, intuitive, readable & chainable. [iOS/macOS/tvOS/CALayer]", "domain": ["mobile-development", "frontend", "cross-platform"], "enriched": true, "function": ["ui-components", "developer-tools"], "health_score": 54, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["layoutBox/PinLayout"], "name": "layoutBox/PinLayout", "platform": [], "pushed_at": "2025-07-23T12:20:32+00:00", "repo": "layoutBox/PinLayout", "stars": 2434, "tags": ["swift", "layout", "auto-layout-alternative", "uiview", "calayer", "chainable-api", "cocoapods", "carthage", "swift-package-manager", "rtl-support", "ios", "macos"], "topics": ["swift", "layout-engine", "carthage", "cocoapod", "chainable-methods", "swift-3", "swift-library", "uiview-extension", "ios", "ios-swift", "ios-lib", "layout", "rtl", "left-language", "margin", "anchor", "ios-ui", "swift-framework", "language"], "urls": [], "use_cases": ["lay out iOS views in Swift without Auto Layout constraints", "replace storyboard constraints with readable chainable layout code", "position views relative to safe area or keyboard", "compute view sizes automatically with sizeToFit", "layout CALayer directly on macOS or iOS", "support right-to-left language layouts"], "what_it_is": "PinLayout is a Swift layout library for laying out UIView, NSView, and CALayer without Auto Layout, using concise, chainable, pure-code syntax. It supports iOS, tvOS, and macOS and offers fast, fully controlled frame-based layouting.", "when_to_avoid": ["your project is heavily invested in Interface Builder and constraint-based Auto Layout", "you need reactive constraint updates that adapt automatically to size-class changes", "you are building for platforms outside Apple's ecosystem"], "when_to_choose": ["you want maximum layout performance without constraint solving", "you prefer explicit frame-based layout code over Auto Layout", "you need a lightweight layout DSL for iOS, tvOS, or macOS views"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pinlayout", "repo": "layoutBox/PinLayout", "role": "main", "score": 38}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "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:06:51.271971+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.271971+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:31:08.770731+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "415fe3069ca5a417371306e3a56d6cf1e154bacdc661bead39653210e3f30c89", "fetched_at": "2026-08-28T04:06:51.271971+00:00", "kind": "readme", "missing": false, "url": "https://github.com/layoutBox/PinLayout"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 33, "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": 3474, "days_push": 406, "days_rel": 406, "gap_med": null, "n_releases_24m": 1}, "score": 38, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}