→ cards/13-drizzle

Chapter

13 · Drizzle ORM (SQL-first)

Drizzle quickstart for App Router: schema, client, and query patterns.

Mental Model

  • SQL-first, type-safe, minimal magic.
  • Great fit for App Router when you want explicit queries.

Install (SQLite)

npm install drizzle-orm better-sqlite3
npm install -D drizzle-kit

Schema

import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";

export const users = sqliteTable("users", {
  id: integer("id").primaryKey(),
  email: text("email").notNull(),
});

Client

import Database from "better-sqlite3";
import { drizzle } from "drizzle-orm/better-sqlite3";

const sqlite = new Database("dev.db");
export const db = drizzle(sqlite);

Query

await db.select().from(users);

SQLite → Postgres

  • Swap driver; keep schema; run drizzle-kit generate.
  • Maintain SQL-first workflow.