{"adoption": {"forks": 464, "observed_at": "2026-08-28T04:06:52.862874+00:00", "stars": 2449}, "canonical_url": "https://ross.abutalabs.com/products/rskimagecropper", "card": {"archived": false, "artifact_type": "library", "description": "An image / photo crop view controller for iOS like in the Contacts app with support for landscape orientation.", "domain": ["image-processing", "mobile-development"], "enriched": true, "function": ["image-processing", "ui-components"], "health_score": 82, "homepage": null, "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["ruslanskorb/RSKImageCropper"], "name": "ruslanskorb/RSKImageCropper", "platform": [], "pushed_at": "2026-03-26T16:36:46+00:00", "repo": "ruslanskorb/RSKImageCropper", "stars": 2449, "tags": ["image-cropper", "objective-c", "view-controller", "photo-editing", "contacts-app-style", "ios", "mobile", "swift"], "topics": ["crop", "cropping", "trimming", "cropper", "editor", "image", "photo", "contacts-app", "edit"], "urls": [], "use_cases": ["crop profile photos in an iOS app like the Contacts app", "let users move, rotate, and zoom an image before cropping", "apply a circular or custom-shaped mask to cropped images", "build an avatar upload flow with cropping", "support landscape orientation while cropping photos"], "what_it_is": "RSKImageCropper is an Objective-C library providing an image/photo crop view controller for iOS, styled like the Contacts app crop UI, with landscape orientation support. It offers delegate and data source APIs for customizing crop masks, movement rects, and handling cropped output.", "when_to_avoid": ["you need image cropping on Android or cross-platform frameworks", "you need advanced photo editing beyond cropping (filters, adjustments)", "your project targets iOS versions below 12.0"], "when_to_choose": ["you need a native iOS crop UI similar to Apple's Contacts app", "you want a lightweight, battle-tested Objective-C cropper with SPM support", "you need custom mask shapes or movement rects via data source methods"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rskimagecropper", "repo": "ruslanskorb/RSKImageCropper", "role": "main", "score": 69}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "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:52.862874+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.862874+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:30:15.024629+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8b2f3838f2952206ea5fdc55cb188affd0d5f98ca51c2df31cf090188b6c3b08", "fetched_at": "2026-08-28T04:06:52.862874+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ruslanskorb/RSKImageCropper"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 74, "longevity": 100, "rhythm": 44}, "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": 4392, "days_push": 160, "days_rel": 160, "gap_med": 240.5, "n_releases_24m": 3}, "score": 69, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}