View as Json

Drizzle MySQL Starter

The Drizzle MySQL Starter is a database foundation provided by servercn for projects that use MySQL with Drizzle ORM.

Drizzle Official Docs

Installation Guide

npx servercn-cli init drizzle-mysql-starter

What This Starter Solves

Setting up Drizzle with MySQL repeatedly involves:

  • Database connection management
  • Schema organization
  • Migration configuration
  • Environment‑based credentials
  • Type safety across queries

The Drizzle MySQL Starter standardizes these concerns using a minimal, explicit setup.

Environment Configuration

Database credentials are loaded via environment variables.

NODE_ENV='development'
PORT='9000'
LOG_LEVEL='info'
 
DATABASE_URL='mysql://root:password@localhost:3306/db-name'

The server fails fast if required database variables are missing.

Defining Schemas

Schemas are written using Drizzle's SQL-first, type-safe API.

src/drizzle/schemas/user.schema.ts
import { mysqlTable, serial, varchar } from "drizzle-orm/mysql-core";
 
export const usersTable = mysqlTable("users", {
  id: serial().primaryKey(),
  name: varchar({ length: 255 }).notNull(),
  email: varchar({ length: 255 }).notNull().unique(),
  password: varchar("password", { length: 255 }).notNull()
});

Schemas are:

  • Explicit
  • Version-controlled
  • Fully typed across queries

Database Client Setup

src/configs/db.ts
import { drizzle } from "drizzle-orm/mysql2";
import env from "./env";
 
const db = drizzle(env.DATABASE_URL!, {
  logger: env.NODE_ENV === "development"
});
 
export default db;

No repositories or hidden layers — you interact directly with Drizzle.

Migrations Workflow

npm run db:generate
npm run db:migrate

Migrations are SQL-first and fully auditable.

npm run db:studio

Summary

The Drizzle MySQL Starter gives you a clean, production-ready database foundation using MySQL + Drizzle ORM.

It prioritizes clarity, type safety, and long-term maintainability — without taking control away from you.

File & Folder Structure

Loading files...

Installation

npx servercn-cli init drizzle-mysql-starter