{"repo":"rogerpadilla/uql","free":true,"listed":false,"github":"https://github.com/rogerpadilla/uql","clone":"git clone https://github.com/rogerpadilla/uql.git","description":"JSON-native TypeScript ORM for Node.js, Bun and Deno. Supports PostgreSQL, MySQL, MariaDB, SQLite, CockroachDB, Turso, Neon, Cloudflare D1 and MongoDB. Queries are plain JSON, typed to the leaf.","language":"TypeScript","stars":110,"topics":["orm","migrations","typescript","cloudflare-d1","neon","postgres","postgresql","sqlite","turso","json"],"license":"MIT","category":"databases-storage","readme_excerpt":"The JSON-native TypeScript ORM Queries are plain JSON, typed to the leaf. Unified across SQL databases and MongoDB. Website · Quick Start · Benchmark · Compare ORMs · Blog --- That is the whole install (setup), and the imperative API skips decorators altogether. That query is a serializable value. Build it dynamically, store it, diff it, or send it from the browser to the server. The same object runs on every supported database. Why UQL? - Serializable queries (JSON), not method chains. Plain JSON in, typed rows out. No DSL to learn. - Type-safe to the leaf, nothing to generate. Every key is checked against your entity, down into populated relations and JSON/JSONB dot-paths, so $like on a numeric column is a compile error. Entities are plain classes on the standard TC39 decorators: no .prisma file, no generated client, no reflect-metadata , no experimentalDecorators . - One API, everywhere it runs. PostgreSQL, CockroachDB, MySQL, MariaDB, SQLite, Turso, libSQL, Neon, Cloudflare D1, Bun's native SQL, and even MongoDB. The same code on Node 24+, Bun, Deno, Cloudflare Workers, AWS Lambda and Vercel, and the browser, with no native binaries on the fetch -based drivers. - Relations without N+1. $populate loads a to-many with one query for all parents, not one per parent. Nothing is lazy, so nothing fires behind your back in a serializer. - Migrations you read before they run. Edit an entity, run uql-migrate generate:entities , review the SQL in the PR like any other file. drift:ch","default_branch":null,"files":null,"tree":[],"storefront":"/r/rogerpadilla","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/rogerpadilla/uql/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}