{"adoption": {"forks": 159, "observed_at": "2026-08-28T04:06:05.332098+00:00", "stars": 2013}, "canonical_url": "https://ross.abutalabs.com/products/vectalign", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Tool for create complex morphing animations using VectorDrawables (allows morphing between any pair of SVG images)", "domain": ["android-tools", "mobile-development", "graphics", "developer-tools"], "enriched": true, "function": ["graphics", "animation", "image-processing", "developer-tools"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["bonnyfone/vectalign"], "name": "bonnyfone/vectalign", "platform": ["cli", "cross-platform", "jvm"], "pushed_at": "2021-06-22T09:52:47+00:00", "repo": "bonnyfone/vectalign", "stars": 2013, "tags": ["vectordrawable", "svg-morphing", "animatedvectordrawable", "path-alignment", "gui", "android"], "topics": ["morphing-animations", "svg-images", "svg-path", "android", "android-development", "vectalign"], "urls": [], "use_cases": ["morph between two arbitrary SVG icons in an Android app", "fix 'Can't morph from' runtime exceptions for AnimatedVectorDrawable", "generate compatible pathData pairs for complex vector animations", "preview vector morphing animations before exporting", "convert incompatible SVG paths into morphable ones"], "what_it_is": "VectAlign is a Java tool that aligns two VectorDrawable pathData strings or SVG images so they become compatible for morphing animations via AnimatedVectorDrawable. It can be used from the command line or a simple GUI with morphing preview and export functionality.", "when_to_avoid": ["you need morphing for non-Android platforms like iOS or web", "you need Lottie or raster image animations", "you need an actively maintained library with recent updates"], "when_to_choose": ["you need Android VectorDrawable morphing animations between complex or incompatible paths", "you want a GUI with preview and export for path alignment", "manual path command injection is too tedious"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/vectalign", "repo": "bonnyfone/vectalign", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "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:05.332098+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.332098+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:00:54.501493+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fe5e6ae2b2f709f27ee324e9313d23d74dc531af46b492716e28556f417cccb", "fetched_at": "2026-08-28T04:06:05.332098+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bonnyfone/vectalign"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4017, "days_push": 1898, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}