{"adoption": {"forks": 1050, "observed_at": "2026-08-28T04:10:02.375963+00:00", "stars": 7682}, "canonical_url": "https://ross.abutalabs.com/products/mapstruct", "card": {"archived": false, "artifact_type": "library", "description": "An annotation processor for generating type-safe bean mappers", "domain": ["developer-tools", "backend", "web-development"], "enriched": true, "function": ["serialization", "developer-tools", "build-tool"], "health_score": 97, "homepage": "https://mapstruct.org/", "language": "Java", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["mapstruct/mapstruct", "mapstruct/mapstruct-examples"], "name": "MapStruct", "platform": ["jvm"], "pushed_at": "2026-08-07T00:26:51+00:00", "repo": "mapstruct/mapstruct", "stars": 7682, "tags": ["bean-mapping", "annotation-processor", "code-generation", "dto-mapping", "compile-time", "no-reflection", "java-records", "lombok-compatible", "android"], "topics": ["mapstruct", "java", "annotation-processor", "mapping", "javabeans", "no-reflection", "bean-mapping", "records"], "urls": [{"kind": "homepage", "url": "https://mapstruct.org/"}, {"kind": "site_page", "url": "https://mapstruct.org/documentation/installation"}, {"kind": "site_page", "url": "https://mapstruct.org/faq"}, {"kind": "site_page", "url": "https://mapstruct.org/documentation/reference-guide"}], "use_cases": ["map jpa entities to dtos in java", "generate bean mapper code without reflection", "convert between java records and pojos", "avoid manual getter/setter mapping code", "compile-time type-safe object mapping for android", "map between different object models in layered architecture"], "what_it_is": "MapStruct is a Java annotation processor that generates type-safe, high-performance bean mapping code at compile time, supporting beans, records, and complex object hierarchies. Generated mappers use plain method invocations instead of reflection, producing self-contained code with no runtime dependencies.", "when_to_avoid": ["you need dynamic runtime mapping of arbitrary objects", "your mappings change frequently at runtime based on configuration", "you're not on the JVM"], "when_to_choose": ["you want fast mapping with no runtime overhead or reflection", "you need compile-time errors for incomplete or incorrect mappings", "you want debuggable, hand-editable generated code", "you target Android or other environments where runtime dependencies are costly"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/mapstruct/mapstruct", "repo": "mapstruct/mapstruct", "role": "main", "score": 77}, {"path": "/repos/mapstruct/mapstruct-examples", "repo": "mapstruct/mapstruct-examples", "role": "examples", "score": 62}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "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:10:02.375963+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:02.375963+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:36:02.311105+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff8254d5b57ac48397c7439234f7e3763c75ede9b68ed232c94e29478d4732f4", "fetched_at": "2026-08-28T04:10:02.375963+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mapstruct/mapstruct"}, {"content_hash": "152d952019e5530f6824354b03361e3af07d43fcee7a1a707b66c87ec6061ec5", "fetched_at": "2026-08-29T08:31:39.445015+00:00", "kind": "homepage", "missing": false, "url": "https://mapstruct.org/"}, {"content_hash": "e7f140311263b2b135be05c4c29aa86f7e11a111257e595ffc8891a2fdd605b7", "fetched_at": "2026-08-29T08:31:39.447598+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/installation"}, {"content_hash": "1c01cf0af42d255453f0c30dc284aa2b024159df9a500ceada0307f4890d6706", "fetched_at": "2026-08-29T08:31:39.451341+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/documentation/reference-guide"}, {"content_hash": "d9db83a7953b925db920f990bdda0a9a97d7d4e0beb0607ad5713651a27b10bc", "fetched_at": "2026-08-29T08:31:39.449344+00:00", "kind": "site_page", "missing": false, "url": "https://mapstruct.org/faq"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 40}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5210, "days_push": 27, "days_rel": 662, "gap_med": 27.0, "n_releases_24m": 3}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}