{"adoption": {"forks": 64, "observed_at": "2026-08-28T04:05:06.888703+00:00", "stars": 1580}, "canonical_url": "https://ross.abutalabs.com/products/luster-io-impulse", "card": {"archived": false, "artifact_type": "library", "description": "Dynamic Physics Interactions for the Mobile Web", "domain": ["frontend", "mobile-development", "web-development"], "enriched": true, "function": ["animation"], "health_score": 20, "homepage": "http://impulse.luster.io", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["luster-io/impulse"], "name": "luster-io/impulse", "platform": ["browser", "cross-platform"], "pushed_at": "2015-06-12T02:27:34+00:00", "repo": "luster-io/impulse", "stars": 1580, "tags": ["physics-animations", "touch-interactions", "mobile-web", "spring-physics", "drag-interactions", "mobile"], "topics": [], "urls": [], "use_cases": ["add spring animations to draggable elements on mobile web", "make UI elements respond naturally to touch and drag gestures", "animate elements based on the velocity of a user's swipe", "build physics-driven scroll or pan interactions in the browser", "create natural-feeling drag-and-release effects for mobile web apps"], "what_it_is": "Impulse is a JavaScript library for creating physics-based animations on the mobile web that flow naturally from user movements. It tracks position and velocity of DOM elements so animations like springs start from wherever the user left off, rather than on fixed timed property tweens.", "when_to_avoid": ["you need a maintained library with recent updates and active support", "you're working with canvas, WebGL, or non-DOM rendering", "you need complex animation timelines rather than simple physics transitions", "your project requires modern browser features or framework integrations like React"], "when_to_choose": ["you need touch-driven animations that inherit position and velocity from user gestures", "you want lightweight spring physics for DOM elements without a full animation framework", "you're building mobile web interactions like draggable cards or bouncing elements"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/luster-io-impulse", "repo": "luster-io/impulse", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "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:06.888703+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.888703+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:56:37.073841+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "92318b1974a0a521c908ca1b9134df17ef858d3a243f53f052a72c43ee5e73ce", "fetched_at": "2026-08-28T04:05:06.888703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luster-io/impulse"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4421, "days_push": 4101, "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}}