{"adoption": {"forks": 433, "observed_at": "2026-08-28T04:08:35.986360+00:00", "stars": 4122}, "canonical_url": "https://ross.abutalabs.com/products/sketchjs", "card": {"archived": false, "artifact_type": "library", "description": "Cross-Platform JavaScript Creative Coding Framework", "domain": ["web-development", "graphics"], "enriched": true, "function": ["graphics", "animation", "gui"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["soulwire/sketch.js"], "name": "soulwire/sketch.js", "platform": ["browser"], "pushed_at": "2023-09-16T03:41:59+00:00", "repo": "soulwire/sketch.js", "stars": 4122, "tags": ["creative-coding", "canvas", "webgl", "generative-art", "animation-loop", "tiny-library", "javascript"], "topics": [], "urls": [], "use_cases": ["create generative art in the browser", "build interactive canvas sketches with mouse and touch input", "prototype particle systems and visual experiments", "use WebGL or Canvas2D without boilerplate setup", "teach creative coding with a minimal API", "combine with THREE.js by supplying a custom context"], "what_it_is": "A tiny (~2kb gzipped) JavaScript creative coding framework that provides a graphics context, animation loop, and normalized input events. It removes boilerplate so developers can focus on drawing and interactive visuals in the browser.", "when_to_avoid": ["you need a full-featured game engine or physics engine", "you require long-term active maintenance and frequent updates", "you need server-side or non-browser rendering", "you prefer a larger ecosystem like p5.js with extensive community resources"], "when_to_choose": ["you want a minimal, dependency-free creative coding setup", "you need unified mouse and touch event handling", "you want an easy animation loop with setup/update/draw callbacks", "you want to pair a sketch loop with libraries like THREE.js"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sketchjs", "repo": "soulwire/sketch.js", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "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:08:35.986360+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.986360+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:23:06.356277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f450ee672ca829c347c9434bcd1c4c0090c4f4b73762e45ed6ab8bb520c7e973", "fetched_at": "2026-08-28T04:08:35.986360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soulwire/sketch.js"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5168, "days_push": 1082, "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}}