// the find
alfateam/orange-orm
The ultimate ORM for Node and Typescript
Orange ORM is an Active Record-style ORM for Node.js, Bun, and Deno covering an unusually wide database matrix: Postgres, MySQL, MariaDB, MS SQL, Oracle, SAP ASE, SQLite, Cloudflare D1, and PGlite. The browser proxy feature lets you run the same query API client-side by replaying method calls through an Express or Hono server rather than sending raw SQL. Targets teams who want a single ORM abstraction across disparate database backends.
The cross-relation filter syntax is genuinely expressive — `x.lines.any(line => line.product.contains('i')).and(x.customer.balance.greaterThan(180))` compiles to a single join query without N+1 risk. Column-level concurrency strategies (optimistic / overwrite / skipOnConflict) are a real feature most ORMs skip or paper over with last-write-wins. PGlite support means you can run the same ORM in-process for tests without a Postgres server. The schema is defined once in code with full IntelliSense and no code-gen step — the mapping is the source of truth.
No migration tooling at all — you write raw DDL by hand, as the init.ts examples make clear. For anything beyond a demo database this is a significant operational gap. The source is JavaScript with `.d.ts` files bolted on; the TypeScript coverage is surface-level and type inference through complex relation chains will hit walls. SAP ASE support uses msnodesqlv8 (a Windows ODBC driver primarily built for MSSQL) which is almost certainly untested in CI. At 1001 stars and 22 forks after years of development, the community is thin — expect to debug internals yourself when something goes wrong.