{"adoption": {"forks": 169, "observed_at": "2026-08-28T04:08:22.251813+00:00", "stars": 3825}, "canonical_url": "https://ross.abutalabs.com/products/umbrella", "card": {"archived": false, "artifact_type": "library", "description": "⛱  Broadly scoped ecosystem & mono-repository of 215 TypeScript projects (and ~185 examples) for general purpose, functional, data driven development", "domain": ["web-development", "frontend", "graphics", "data-visualization"], "enriched": true, "function": ["data-visualization", "graphics", "parser", "state-management", "ui-components", "math", "developer-tools"], "health_score": 80, "homepage": "https://thi.ng", "language": "TypeScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["thi-ng/umbrella"], "name": "thi-ng/umbrella", "platform": ["browser", "wasm", "cross-platform"], "pushed_at": "2026-08-25T18:57:54+00:00", "repo": "thi-ng/umbrella", "stars": 3825, "tags": ["functional-programming", "transducers", "reactive-programming", "monorepo", "webgl", "generative-art", "anti-framework", "geometry", "dsl", "shadergraph", "algorithms", "typescript", "nodejs"], "topics": ["color", "data-structures", "dsl", "functional-programming", "geometry", "html", "parser-combinators", "reactive-programming", "shadergraph", "streams", "transducers", "typescript", "ui", "vectors", "visualization", "webassembly", "webgl", "ziglang", "monorepo", "tensors"], "urls": [], "use_cases": ["build generative art and creative coding projects in TypeScript", "process data streams with transducers and iterators", "create interactive WebGL or GPGPU visualizations in the browser", "build reactive UIs without a heavyweight framework", "do computational geometry and vector math in TypeScript", "parse custom DSLs with parser combinators", "work with tensors, colors, and data structures functionally"], "what_it_is": "thi.ng/umbrella is a broadly scoped monorepo of 215 composable TypeScript libraries (plus ~185 examples) for functional, data-driven development, covering data structures, transducers, reactive programming, geometry, and WebGL/GPGPU visualization. It is explicitly an 'anti-framework' ecosystem where users compose small, independent packages rather than adopting an opinionated stack.", "when_to_avoid": ["you want a batteries-included framework with a single opinionated way to build apps", "you need a large community, commercial support, or abundant third-party tutorials", "your team is new to functional programming concepts", "you need a single npm package rather than picking from many small ones"], "when_to_choose": ["you want small, composable functional TypeScript libraries instead of a monolithic framework", "you're doing creative coding, generative art, or data visualization in the browser", "you need transducers, reactive streams, or geometry utilities with strong typing", "you prefer human-maintained, carefully designed libraries over framework lock-in"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/umbrella", "repo": "thi-ng/umbrella", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "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:22.251813+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.251813+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:26:22.505648+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "778799143680da09be41053bed7a05d7223996e9ba63fa45b65ae4f982f97711", "fetched_at": "2026-08-28T04:08:22.251813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thi-ng/umbrella"}, {"content_hash": "3febaaed9abe02e52a6c9f574355d608864dcb844b5add6a9f9483dc55ab135c", "fetched_at": "2026-08-29T09:21:18.456379+00:00", "kind": "homepage", "missing": false, "url": "https://thi.ng"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "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": 3144, "days_push": 8, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}