Now in public beta

Start with JSON. Graduate to SQL.

The development-first ORM that gets out of your way. Prototype with a JSON file, ship with any SQL database. Same code, zero rewrites.

$npm install seedorm
Get Started
app.tstypescript
1import { SeedORM, FieldType } from "seedorm";
2
3const db = new SeedORM();
4await db.connect();
5
6const User = db.model({
7 name: "User",
8 collection: "users",
9 schema: {
10 name: { type: FieldType.String, required: true },
11 email: { type: FieldType.String, unique: true },
12 role: { type: FieldType.String, enum: ["admin", "user"] },
13 },
14});
15await User.init();
16
17const alice = await User.create({
18 name: "Alice",
19 email: "alice@company.com",
20 role: "admin",
21});
22
23const admins = await User.find({
24 filter: { role: { $eq: "admin" } },
25 sort: { name: 1 },
26});

Everything you need, nothing you don't

A complete data layer that scales to production without you having to rewrite anything. We did the hard part so you don't have to.

Zero-config start

Run one command and start building. No database setup, no Docker, no 45-minute environment setup. Your data lives in a JSON file you can actually open and read like a normal person.

Real ORM, not a toy

Schema validation, unique constraints, indexed fields, compound queries with $eq, $gt, $in, $like and more. It starts with JSON but it's not messing around.

Seamless migration

When your side project accidentally gets users, change one config line and you're on PostgreSQL. MySQL and SQLite are coming soon. Your code doesn't change. Not one line.

Built-in dev tools

REST API server with one command. Visual Studio UI to browse and edit your data. CLI for migrations, exports, and project management. Batteries included, assembly not required.

TypeScript first

Written in TypeScript with full type definitions. Dual CJS/ESM output. Works with Node.js 18+ and every major framework. Your IDE will actually be helpful for once.

Lightweight & fast

Only 3 runtime dependencies. In-memory operations with atomic disk writes. No background processes, no daemon, no cloud subscription. Your node_modules will barely notice.

One line to production

Your seedorm.config.json is the only thing that changes between development and production. Switch from JSON to any SQL database by changing the adapter field. Your models, queries, and application logic remain identical.

JSONPostgreSQLMySQLsoonSQLitesoon
seedorm.config.jsonjson
// Development: JSON file
{
"adapter": { "adapter": "json", "path": "./data" }
}
// Production: swap to any supported database
{
"adapter": { "adapter": "postgres", "url": "postgres://..." }
}
// Your code stays exactly the same.

Start building in seconds

No database to install. No Docker. No config files to copy-paste from Stack Overflow. Just npm install and start writing code.