{"adoption": {"forks": 334, "observed_at": "2026-08-28T04:07:09.498276+00:00", "stars": 2671}, "canonical_url": "https://ross.abutalabs.com/products/jsrender", "card": {"archived": false, "artifact_type": "library", "description": "A lightweight, powerful and highly extensible templating engine. In the browser or on Node.js, with or without jQuery.", "domain": ["web-development", "frontend", "developer-tools"], "enriched": true, "function": ["templating", "frontend-framework"], "health_score": 93, "homepage": "http://www.jsviews.com", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["BorisMoore/jsrender"], "name": "BorisMoore/jsrender", "platform": ["browser"], "pushed_at": "2026-06-25T23:30:03+00:00", "repo": "BorisMoore/jsrender", "stars": 2671, "tags": ["jquery-plugin", "template-engine", "data-driven-rendering", "express", "hapi", "browserify", "mvvm", "nodejs", "javascript"], "topics": [], "urls": [], "use_cases": ["render HTML from JSON data with client-side templates", "server-side templating in Express or Hapi Node.js apps", "replace jQuery Templates (jquery-tmpl) in a legacy app", "build interactive single-page apps with JsViews data binding", "precompile templates for fast rendering without jQuery", "bundle templates with Browserify or webpack"], "what_it_is": "JsRender is a lightweight, highly extensible JavaScript templating engine optimized for high-performance rendering of data-driven templates to strings, without DOM dependency. It works in the browser or on Node.js, with or without jQuery, and serves as the rendering layer for the JsViews data-binding/MVVM platform.", "when_to_avoid": ["your stack already uses a modern framework like React or Vue with its own rendering", "you need full HTML documents with layout inheritance rather than string templates", "you prefer server-side engines like EJS, Handlebars, or Pug with larger ecosystems"], "when_to_choose": ["you need a fast, dependency-free templating engine usable in browser and Node.js", "you are migrating from jquery-tmpl or jQuery Data Link", "you want extensible template syntax with custom tags and helpers", "you plan to use JsViews for data-bound MVVM UIs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jsrender", "repo": "BorisMoore/jsrender", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "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:07:09.498276+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:09.498276+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:18:07.674719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7aedd3456dfd2081a97ae68aada4d3a20b49d403311de2b4d4cdf56d10dff6f", "fetched_at": "2026-08-28T04:07:09.498276+00:00", "kind": "readme", "missing": false, "url": "https://github.com/BorisMoore/jsrender"}, {"content_hash": "7ec6fdc499ad0356b4cbe22ef63db07d5a731e21f467cb422e83fad9a0b35835", "fetched_at": "2026-08-29T10:00:57.649410+00:00", "kind": "homepage", "missing": false, "url": "http://www.jsviews.com"}, {"content_hash": "ad1239c12fc738deb97f8110c5b89c852fac139052460e0f42d5d528dee65999", "fetched_at": "2026-08-29T10:00:57.651772+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/jsrender"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 89, "longevity": 100, "rhythm": 58}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5612, "days_push": 69, "days_rel": 69, "gap_med": 399, "n_releases_24m": 2}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}