{"adoption": {"forks": 247, "observed_at": "2026-08-28T04:03:57.652676+00:00", "stars": 1198}, "canonical_url": "https://ross.abutalabs.com/products/guoyingtao-mantis", "card": {"archived": false, "artifact_type": "library", "description": "An iOS image cropping library for UIKit and SwiftUI, mimicking the Photos app — crop shapes, rotation, flip, perspective correction, undo/redo. iOS & Mac Catalyst.", "domain": ["image-processing", "mobile-development"], "enriched": true, "function": ["image-processing", "ui-components"], "health_score": 95, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["guoyingtao/Mantis"], "name": "guoyingtao/Mantis", "platform": ["mac-catalyst"], "pushed_at": "2026-07-11T23:04:15+00:00", "repo": "guoyingtao/Mantis", "stars": 1198, "tags": ["image-cropping", "swiftui", "uikit", "photo-editing", "perspective-correction", "cocoapods", "swift-package-manager", "ios-tools", "ios", "swift"], "topics": ["cropping", "swift", "crop", "image-cropper", "image-crop", "image-cropping", "ios", "swiftui", "cropper", "crop-image", "mac-catalyst", "photo-editing", "uikit", "avatar", "cocoapods", "image-editor", "image-processing", "ios-library", "photo-editor", "swift-package-manager"], "urls": [], "use_cases": ["crop profile avatars in an iOS app", "add a Photos-style image cropper to SwiftUI", "let users straighten and rotate photos before upload", "apply perspective correction to document photos", "crop images to custom shapes like circles or hearts", "persist crop settings and re-crop later"], "what_it_is": "Mantis is a Swift image cropping library for iOS and Mac Catalyst offering UIKit and SwiftUI APIs with an Apple Photos-style crop experience. It supports rotation, flip, fixed and free aspect ratios, custom crop shapes, perspective correction, and undo/redo.", "when_to_avoid": ["you need cross-platform (Android or web) cropping", "you need full photo editing beyond cropping, such as filters or adjustments", "your project is not Swift-based"], "when_to_choose": ["you need a native iOS crop UI in UIKit or SwiftUI", "you want aspect ratio presets, rotation, flip, and undo/redo out of the box", "you need custom crop shapes or perspective correction", "you target iOS and Mac Catalyst with localization"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/guoyingtao-mantis", "repo": "guoyingtao/Mantis", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "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:57.652676+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:57.652676+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:21:09.781811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7285019e60360da34603300e170de0026355a2abfe09bb6ca757ceb6a204dfe", "fetched_at": "2026-08-28T04:03:57.652676+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guoyingtao/Mantis"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 100, "rhythm": 92}, "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": 2873, "days_push": 53, "days_rel": 55, "gap_med": 22, "n_releases_24m": 20}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}