{"adoption": {"forks": 258, "observed_at": "2026-08-28T04:05:26.270822+00:00", "stars": 1715}, "canonical_url": "https://ross.abutalabs.com/products/flexlib", "card": {"archived": false, "artifact_type": "framework", "description": "FlexLib是一个基于flexbox模型，使用xml文件进行界面布局的框架，融合了web快速布局的能力，让iOS界面开发像写网页一样简单快速", "domain": ["mobile-development", "frontend", "web-development"], "enriched": true, "function": ["ui-components", "templating", "state-management"], "health_score": 64, "homepage": null, "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["zhenglibao/FlexLib"], "name": "zhenglibao/FlexLib", "platform": ["cross-platform"], "pushed_at": "2025-11-25T12:40:36+00:00", "repo": "zhenglibao/FlexLib", "stars": 1715, "tags": ["flexbox", "xml-layout", "autolayout", "hot-reload", "objective-c", "yoga", "iphone-x", "ui-framework", "ios", "mobile"], "topics": ["autolayout", "flexbox", "yoga", "ios", "layout", "framework", "iphonex", "hot-reload", "screenshot", "masonry", "flexlib", "xml", "iphone-x", "livereload", "facebook", "css", "xml-layout", "intellisense"], "urls": [], "use_cases": ["build iOS interfaces with XML flexbox layouts instead of autolayout", "hot reload UI layouts while developing an iOS app", "speed up iOS UI development like writing web pages", "adapt iOS layouts to iPhone X notch and safe areas", "avoid keyboard overlap in forms automatically", "use flexbox layout in Swift iOS projects"], "what_it_is": "FlexLib is an Objective-C layout framework for iOS based on the flexbox model, using XML files to define UI layouts with automatic variable and event binding. It brings web-style layout speed to iOS development, including hot preview, keyboard avoidance, and iPhone X adaptation.", "when_to_avoid": ["you are building for Android or cross-platform only", "you prefer SwiftUI or storyboard-based workflows", "the project requires a very actively maintained ecosystem"], "when_to_choose": ["you want faster, more readable iOS layouts than autolayout or Masonry", "your team is familiar with CSS flexbox and wants that model on iOS", "you need live/hot preview of UI changes during development"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/flexlib", "repo": "zhenglibao/FlexLib", "role": "main", "score": 54}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "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:26.270822+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.270822+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.311437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5696ee9e5083007ce32fb5d1b0ccebd5139aea3fba20720298b13c0d4e1c9a14", "fetched_at": "2026-08-28T04:05:26.270822+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhenglibao/FlexLib"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 54, "longevity": 100, "rhythm": 28}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3192, "days_push": 281, "days_rel": 496, "gap_med": 57.0, "n_releases_24m": 3}, "score": 54, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}