{"adoption": {"forks": 116, "observed_at": "2026-08-28T04:05:56.048047+00:00", "stars": 1930}, "canonical_url": "https://ross.abutalabs.com/products/easypeasy", "card": {"archived": false, "artifact_type": "library", "description": "Auto Layout made easy ", "domain": ["mobile-development", "frontend"], "enriched": true, "function": ["ui-components", "developer-tools"], "health_score": 20, "homepage": "easy-peasy.io", "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["nakiostudio/EasyPeasy"], "name": "nakiostudio/EasyPeasy", "platform": [], "pushed_at": "2022-03-17T09:33:24+00:00", "repo": "nakiostudio/EasyPeasy", "stars": 1930, "tags": ["auto-layout", "constraints", "dsl", "cocoapods", "carthage", "tvos", "uikit", "ios", "swift", "macos", "mobile"], "topics": ["constraints", "auto", "layout", "auto-layout", "swift", "ios", "easypeasy"], "urls": [], "use_cases": ["create auto layout constraints in swift without boilerplate", "programmatically lay out ios views", "resolve auto layout constraint conflicts", "apply constraints conditionally by size class or orientation", "replace storyboard constraints with code"], "what_it_is": "EasyPeasy is a Swift framework that simplifies creating Auto Layout constraints programmatically with a lightweight DSL. It resolves constraint conflicts automatically and supports conditional constraint application based on platform, size classes, or controller state.", "when_to_avoid": ["you use SwiftUI instead of UIKit", "you prefer SnapKit or another more actively maintained layout DSL", "you rely on Interface Builder storyboards for layout"], "when_to_choose": ["you build UIKit apps in Swift and prefer code-based layout", "you want a lightweight DSL over NSLayoutConstraint boilerplate", "you need conditional constraints based on traits or state"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/easypeasy", "repo": "nakiostudio/EasyPeasy", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "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:05:56.048047+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:56.048047+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:08:47.899276+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1c0bfa8eeb0648aec45849f9ca7b542aeb4adb3c148ed8d887df243f71bcf975", "fetched_at": "2026-08-28T04:05:56.048047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakiostudio/EasyPeasy"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 3813, "days_push": 1630, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}