{"adoption": {"forks": 45, "observed_at": "2026-08-28T04:05:31.009344+00:00", "stars": 1749}, "canonical_url": "https://ross.abutalabs.com/products/nodl", "card": {"archived": false, "artifact_type": "framework", "description": "A framework for computational node graphs.", "domain": ["developer-tools", "web-development", "frontend"], "enriched": true, "function": ["workflow-automation", "data-science", "ui-components"], "health_score": 20, "homepage": "https://usenodl.dev", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["emilwidlund/nodl"], "name": "emilwidlund/nodl", "platform": ["cross-platform"], "pushed_at": "2024-07-01T22:17:29+00:00", "repo": "emilwidlund/nodl", "stars": 1749, "tags": ["node-graphs", "reactive-programming", "rxjs", "visual-programming", "typescript", "nodejs", "web-server"], "topics": [], "urls": [], "use_cases": ["build node-based visual programming interfaces", "create reactive computational graphs in TypeScript", "render node editors in React apps", "wire up dataflow pipelines with nodes and connections", "build math node graph tools", "prototype node-based application architectures"], "what_it_is": "Nodl is a TypeScript framework for building computational node graphs, built on RxJS for reactive data flow. It includes a core package for defining graphs, a React package for rendering nodes and connections visually, and a library of pre-built math nodes.", "when_to_avoid": ["you need a full standalone node editor application rather than a framework", "you're not using TypeScript or React for the UI layer", "you need battle-tested enterprise-grade node graph tooling"], "when_to_choose": ["you need a reactive node graph engine with React rendering components", "you want RxJS-based dataflow between computational nodes", "you're building a visual node editor in a web frontend"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nodl", "repo": "emilwidlund/nodl", "role": "main", "score": 31}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "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:31.009344+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:31.009344+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:28:47.026693+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "81500dfd2b7d6c9069c1c17f836bca941fefc405e88b8218d1c2c43306c08d5a", "fetched_at": "2026-08-28T04:05:31.009344+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilwidlund/nodl"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 95, "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": 1331, "days_push": 793, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 31, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}