{"id":43399,"library":"nanodb-orm","title":"nanodb-orm","description":"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.","status":"active","version":"0.2.4","language":"javascript","source_language":"en","source_url":"https://github.com/Easy-Deploy-Dev/nanodb-orm","tags":["javascript","database","drizzle","sqlite","turso","migrations","schema","orm","cli","typescript"],"install":[{"cmd":"npm install nanodb-orm","lang":"bash","label":"npm"},{"cmd":"yarn add nanodb-orm","lang":"bash","label":"yarn"},{"cmd":"pnpm add nanodb-orm","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for SQLite/Turso database connections","package":"@libsql/client","optional":false},{"reason":"Used for environment variable loading in CLI and database setup","package":"dotenv","optional":true},{"reason":"Required for Drizzle Studio integration via CLI","package":"drizzle-kit","optional":true}],"imports":[{"note":"Default import is the recommended way to use the library. CommonJS require works but may break tree-shaking. ESM-only since v0.2.","wrong":"const nanodb = require('nanodb-orm')","symbol":"default (nanodb)","correct":"import nanodb from 'nanodb-orm'"},{"note":"Named imports for specific utilities. Avoid subpath imports; everything is exported from the main package.","wrong":"import { createDatabase, schema, query } from 'nanodb-orm/core'","symbol":"createDatabase, schema, query","correct":"import { createDatabase, schema, query } from 'nanodb-orm'"},{"note":"Tree-shakeable individual imports for schema and query helpers. Valid from v0.2 onward.","wrong":"","symbol":"table, integer, text, eq","correct":"import { table, integer, text, eq } from 'nanodb-orm'"}],"quickstart":{"code":"import nanodb from 'nanodb-orm';\n\nconst users = nanodb.schema.table('users', {\n  id: nanodb.schema.integer('id').primaryKey({ autoIncrement: true }),\n  name: nanodb.schema.text('name').notNull(),\n  email: nanodb.schema.text('email').unique().notNull(),\n  age: nanodb.schema.integer('age'),\n});\n\nconst db = await nanodb.createDatabase({\n  tables: { users },\n  seedData: {\n    users: [{ name: 'Alice', email: 'alice@example.com', age: 28 }],\n  },\n});\n\nconst allUsers = await db.select().from(users);\nconsole.log(allUsers);","lang":"typescript","description":"Defines a users table schema, creates a database with auto-migration and seed data, then queries all users."},"warnings":[{"fix":"Set `preview: { deterministicPluginOrdering: true }` in createDatabase options when using multiple plugins.","message":"When using multiple plugins, you must enable deterministicPluginOrdering in the preview config, otherwise createDatabase() accepts only one plugin.","severity":"gotcha","affected_versions":">=0.2.0"},{"fix":"Import nanodb from 'nanodb-orm' and use nanodb.schema.table() instead of importing from 'drizzle-orm/sqlite-core'.","message":"Do not import from Drizzle ORM directly for schema definitions; always use nanodb-orm's schema builder to ensure compatibility and auto-migration features.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Use `await nanodb.createDatabase(...)` or `nanodb.createDatabase(...).then(...)` in v0.2+.","message":"In v0.2.x, the createDatabase function is now async (returns a Promise), whereas in v0.1.x it was synchronous.","severity":"breaking","affected_versions":"0.1.x"},{"fix":"Run `npx nanodb studio` or set up a script: `\"studio\": \"nanodb studio\"`.","message":"The CLI command for Drizzle Studio uses `npx nanodb studio` instead of `npx drizzle-kit studio`. Ensure drizzle-kit is installed as a dependency.","severity":"gotcha","affected_versions":">=0.2.0"},{"fix":"Use `npx nanodb reset` to drop and recreate tables with seed data, or manually insert seed data in your application code.","message":"Seed data is only applied on initial creation of the database (when tables don't exist). Subsequent runs with existing tables ignore seedData.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"search_vec":"'0.2.4':15 'activ':18 'api':68 'audit':46 'auto':28 'auto-migr':27 'boilerpl':71 'cadenc':20 'cli':33,107 'concurr':86 'config':60 'current':12 'data':63 'databas':35,78,100 'develop':19 'drizzl':10,23,38,53,101 'embed':83 'featur':81 'full':91 'hook':50 'import':98 'includ':37 'integr':40 'introspect':31 'javascript':99 'lightweight':5 'local':73 'migrat':29,61,104 'nanodb':2,55 'nanodb-orm':1,54 'offer':57 'oper':36 'orm':3,7,11,56,106 'plugin':43 'preview':80 'provid':26 'raw':52 'reduc':70 'remot':76 'replica':84 'schema':30,105 'seed':62 'shakeabl':97 'ship':89 'simplifi':22,67 'sqlite':74,102 'studio':39 'support':64,72 'system':44 'transact':88 'transform':49 'tree':96 'tree-shak':95 'turso':77,103 'type':93 'typescript':6,92,108 'unlik':51 'usag':24 'valid':47 'version':14 'wrapper':8 'write':87 'zero':59 'zero-config':58","created_at":"2026-06-05T16:59:36.979244+00:00","updated_at":"2026-06-05T16:59:36.979244+00:00","problems":[{"fix":"Run `npm install @libsql/client`","cause":"Missing peer dependency @libsql/client","error":"Cannot find module '@libsql/client'"},{"fix":"Use default import: `import nanodb from 'nanodb-orm'` and call `await nanodb.createDatabase(...)`","cause":"Incorrect import or outdated version where createDatabase was not async","error":"createDatabase is not a function"},{"fix":"Add `preview: { deterministicPluginOrdering: true }` to createDatabase options","cause":"Using more than one plugin without the preview flag","error":"Multiple plugins detected, but deterministicPluginOrdering is not enabled"},{"fix":"Run `npm install nanodb-orm` and ensure the import is `'nanodb-orm'` not a subpath","cause":"Package not installed or import path incorrect","error":"Cannot find module 'nanodb-orm'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/Easy-Deploy-Dev/nanodb-orm#readme","github":"https://github.com/Easy-Deploy-Dev/nanodb-orm","docs":null,"changelog":null,"pypi":null,"npm":"nanodb-orm","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}