{"adoption": {"forks": 136, "observed_at": "2026-08-28T04:05:11.180717+00:00", "stars": 1613}, "canonical_url": "https://ross.abutalabs.com/products/js-data", "card": {"archived": false, "artifact_type": "library", "description": "Give your data the treatment it deserves with a framework-agnostic, datastore-agnostic JavaScript ORM built for ease of use and peace of mind. Works in Node.js and in the Browser. Main Site: http://js-data.io, API Reference Docs: http://api.js-data.io/js-data", "domain": ["web-development", "databases", "developer-tools"], "enriched": true, "function": ["orm", "database", "http-client", "caching"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["js-data/js-data"], "name": "js-data/js-data", "platform": ["browser", "cross-platform"], "pushed_at": "2023-01-05T14:03:56+00:00", "repo": "js-data/js-data", "stars": 1613, "tags": ["data-mapper", "odm", "datastore-agnostic", "framework-agnostic", "in-memory-store", "adapters", "nodejs", "javascript"], "topics": ["javascript", "nodejs", "orm", "datastore", "data-mapper", "odm"], "urls": [], "use_cases": ["manage application data models in javascript", "reuse the same data layer on node.js server and browser client", "swap between rest api, localstorage, and database backends without changing model code", "query and filter records with a unified api regardless of datastore", "keep data layer intact when migrating between frontend frameworks", "model relational data with relations like hasMany and belongsTo"], "what_it_is": "JSData is a framework-agnostic, datastore-agnostic ORM/ODM for JavaScript that provides a unified data modeling API for Node.js and the browser. It connects to various data sources (REST APIs, MySQL, MongoDB, Redis, localStorage, etc.) through pluggable adapters, letting you reuse data models across environments.", "when_to_avoid": ["you need a battle-tested, actively developed orm for a new project (development activity has slowed)", "you want a typescript-first orm with modern tooling", "you need deep integration with a specific framework's reactivity (e.g., react or vue state)", "you require advanced sql features like migrations or complex joins"], "when_to_choose": ["you need one data modeling layer shared between node.js and the browser", "you want datastore flexibility via adapters (rest, mysql, mongodb, localstorage, redis)", "you are framework-agnostic or anticipate switching frontend frameworks", "you prefer convention-over-configuration orm with room for customization"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/js-data", "repo": "js-data/js-data", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "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:11.180717+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.180717+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:51:06.471583+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a90c543501de09c7636b385e73255613de2119ef374a05483fece19e93b930b6", "fetched_at": "2026-08-28T04:05:11.180717+00:00", "kind": "readme", "missing": false, "url": "https://github.com/js-data/js-data"}, {"content_hash": "9c48aec185540f60fc812809f70f501a32875ebba7ec21a0466e1b1e0bca6b4d", "fetched_at": "2026-08-29T11:23:12.063547+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-data"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 4375, "days_push": 1336, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}