Registry / database / nanodb-orm

nanodb-orm

JSON →
library0.2.4jsnpmunverified

A lightweight TypeScript ORM wrapper for Drizzle ORM, currently at version 0.2.4 with an active development cadence. It simplifies Drizzle usage by providing auto-migrations, schema introspection, a CLI for database operations (including Drizzle Studio integration), and a plugin system for audit, validation, and transformation hooks. Unlike raw Drizzle, nanodb-orm offers zero-config migrations, seed data support, and a simplified API that reduces boilerplate. Supports local SQLite and remote Turso databases, with preview features for embedded replicas and concurrent write transactions. Ships with full TypeScript types and tree-shakeable imports.

npm install nanodb-orm
INSTALL
IMPORT
SIG · NANODB-ORM
N
nanodb-orm
databasejavascriptv0.2.4
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

default (nanodb)
✓ import nanodb from 'nanodb-orm'
✗ const nanodb = require('nanodb-orm')
Default import is the recommended way to use the library. CommonJS require works but may break tree-shaking. ESM-only since v0.2.
createDatabase, schema, query
✓ import { createDatabase, schema, query } from 'nanodb-orm'
✗ import { createDatabase, schema, query } from 'nanodb-orm/core'
Named imports for specific utilities. Avoid subpath imports; everything is exported from the main package.
table, integer, text, eq
✓ import { table, integer, text, eq } from 'nanodb-orm'
Tree-shakeable individual imports for schema and query helpers. Valid from v0.2 onward.

Defines a users table schema, creates a database with auto-migration and seed data, then queries all users.

import nanodb from 'nanodb-orm'; const users = nanodb.schema.table('users', { id: nanodb.schema.integer('id').primaryKey({ autoIncrement: true }), name: nanodb.schema.text('name').notNull(), email: nanodb.schema.text('email').unique().notNull(), age: nanodb.schema.integer('age'), }); const db = await nanodb.createDatabase({ tables: { users }, seedData: { users: [{ name: 'Alice', email: 'alice@example.com', age: 28 }], }, }); const allUsers = await db.select().from(users); console.log(allUsers);
Debug
Known issues
gotchaWhen using multiple plugins, you must enable deterministicPluginOrdering in the preview config, otherwise createDatabase() accepts only one plugin.
fix
Set `preview: { deterministicPluginOrdering: true }` in createDatabase options when using multiple plugins.
affects: >=0.2.0
gotchaDo not import from Drizzle ORM directly for schema definitions; always use nanodb-orm's schema builder to ensure compatibility and auto-migration features.
fix
Import nanodb from 'nanodb-orm' and use nanodb.schema.table() instead of importing from 'drizzle-orm/sqlite-core'.
affects: >=0.1.0
breakingIn v0.2.x, the createDatabase function is now async (returns a Promise), whereas in v0.1.x it was synchronous.
fix
Use `await nanodb.createDatabase(...)` or `nanodb.createDatabase(...).then(...)` in v0.2+.
affects: 0.1.x
gotchaThe CLI command for Drizzle Studio uses `npx nanodb studio` instead of `npx drizzle-kit studio`. Ensure drizzle-kit is installed as a dependency.
fix
Run `npx nanodb studio` or set up a script: `"studio": "nanodb studio"`.
affects: >=0.2.0
gotchaSeed data is only applied on initial creation of the database (when tables don't exist). Subsequent runs with existing tables ignore seedData.
fix
Use `npx nanodb reset` to drop and recreate tables with seed data, or manually insert seed data in your application code.
affects: >=0.1.0
Errors
Common errors & fixes
Cannot find module '@libsql/client'
Missing peer dependency @libsql/client
fix
Run `npm install @libsql/client`
createDatabase is not a function
Incorrect import or outdated version where createDatabase was not async
fix
Use default import: `import nanodb from 'nanodb-orm'` and call `await nanodb.createDatabase(...)`
Multiple plugins detected, but deterministicPluginOrdering is not enabled
Using more than one plugin without the preview flag
fix
Add `preview: { deterministicPluginOrdering: true }` to createDatabase options
Cannot find module 'nanodb-orm'
Package not installed or import path incorrect
fix
Run `npm install nanodb-orm` and ensure the import is `'nanodb-orm'` not a subpath
Upgrade
Version history
0.2.4latest on npm
Audit
Dependencies
@libsql/clientrequiredRequired for SQLite/Turso database connections
dotenvoptionalUsed for environment variable loading in CLI and database setup
drizzle-kitoptionalRequired for Drizzle Studio integration via CLI
Agent activity
9 hits · last 30 days
node
8
Resources
nanodb-orm — npm install nanodb-orm · libregistry