{"adoption": {"forks": 2217, "observed_at": "2026-08-28T04:11:29.957215+00:00", "stars": 20342}, "canonical_url": "https://ross.abutalabs.com/products/knex", "card": {"archived": false, "artifact_type": "library", "description": "A query builder for PostgreSQL, MySQL, CockroachDB, SQL Server, SQLite3 and Oracle, designed to be flexible, portable, and fun to use.", "domain": ["databases", "backend", "web-development", "developer-tools"], "enriched": true, "function": ["database", "database-driver", "orm"], "health_score": 93, "homepage": "https://knexjs.org/", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["knex/knex"], "name": "knex/knex", "platform": [], "pushed_at": "2026-06-26T15:02:12+00:00", "repo": "knex/knex", "stars": 20342, "tags": ["sql-query-builder", "query-builder", "schema-migrations", "multi-dialect", "connection-pooling", "transactions", "nodejs", "javascript"], "topics": ["sql", "knex", "mysql", "postgresql", "sqlite3", "javascript"], "urls": [], "use_cases": ["build sql queries programmatically in node.js", "write portable queries across multiple sql databases", "run database schema migrations", "manage transactions and connection pooling in node apps", "avoid writing raw sql strings by hand", "swap database backends without rewriting queries"], "what_it_is": "Knex.js is a batteries-included SQL query builder for JavaScript supporting PostgreSQL, MySQL/MariaDB, CockroachDB, MSSQL, SQLite3, Oracle, and Amazon Redshift. It provides a fluent query and schema builder with transactions, connection pooling, streaming, migrations, and both promise and callback APIs.", "when_to_avoid": ["you prefer a full-featured ORM with model relations out of the box", "you work outside the Node.js/JavaScript ecosystem", "you need a NoSQL or document database"], "when_to_choose": ["you want a flexible query builder rather than a full ORM", "you need to support multiple SQL dialects with one codebase", "you want migrations and schema management built in", "you use ORMs like Objection.js or MikroORM that build on Knex"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/knex", "repo": "knex/knex", "role": "main", "score": 92}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "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:11:29.957215+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.957215+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:59:02.278875+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e4037c258b2f5dc5ee983fb33c8a53618befbbc867c209efb31ff15443585ae", "fetched_at": "2026-08-28T04:11:29.957215+00:00", "kind": "readme", "missing": false, "url": "https://github.com/knex/knex"}, {"content_hash": "f77fba2b7873cfdf553dc62de7555d1e7365f5856e732c44f53c10f873b58b3d", "fetched_at": "2026-08-29T07:57:58.404121+00:00", "kind": "homepage", "missing": false, "url": "https://knexjs.org/"}, {"content_hash": "a2c3b5bea79129a32d81e8069da84502cddebb3a34de14139b8b2ba92640e855", "fetched_at": "2026-08-29T07:57:58.413257+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/faq"}, {"content_hash": "ff40bbdac081d118a9ef8f2e9748d375dccec83b8f328ef71d876ad1f4bf4c86", "fetched_at": "2026-08-29T07:57:58.415460+00:00", "kind": "site_page", "missing": false, "url": "https://knexjs.org/changelog.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 89, "longevity": 100, "rhythm": 90}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4995, "days_push": 68, "days_rel": 68, "gap_med": 3.0, "n_releases_24m": 9}, "score": 92, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}