Prisma MySQL Starter

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

Prisma Official Docs

Installation Guide

npx servercn-cli init prisma-mysql-starter

What This Starter Solves

Setting up Prisma with MySQL repeatedly involves:

  • Database connection setup
  • Prisma client initialization
  • Schema definition and migrations
  • Environment configuration
  • Query logging and debugging

The Prisma MySQL Starter standardizes these concerns so every project starts with a reliable database layer.

What You Get Out of the Box

After initialization, your project includes:

  • Prisma ORM configured for MySQL
  • Prisma Client for type-safe queries
  • Centralized database configuration
  • Environment‑based database config
  • Safe startup validation
  • Production‑ready connection handling
  • Prisma migration setup
  • Structured migration workflow
  • CLI‑ready db:migrate and db:deploy scripts
  • Fully typed queries
  • Clean schema organization
  • Zero runtime magic

Environment Configuration

Database credentials are loaded via environment variables.

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

The server fails fast if required database variables are missing.

Defining Schemas

Schemas are defined using Prisma's declarative schema language.

prisma/schema.prisma
datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}
 
generator client {
  provider = "prisma-client-js"
}
 
model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  password  String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

Schemas are:

  • Explicit
  • Version‑controlled
  • Fully typed across queries

Database Client Setup

src/configs/prisma.ts
import { PrismaClient } from "@prisma/client";
import env from "./env";
 
const prisma = new PrismaClient({
  log: env.NODE_ENV === "development" ? ["query", "warn", "error"] : ["error"]
});
 
export default prisma;

No repositories or hidden layers — you interact directly with Prisma Client.

Migrations Workflow

MySQL supports full Prisma migrations, unlike MongoDB's push-only workflow.

npm run db:migrate
npm run db:deploy
npm run db:push

Browse and inspect your MySQL data visually in the browser.

npm run db:studio

Recommended Extensions

For the best experience working with Prisma schemas, install the official Prisma extension for VS Code.

.vscode/extensions.json
{
  "recommendations": [
    "Prisma.prisma"
  ]
}

The extension provides:

  • Syntax highlighting for .prisma files
  • Auto-formatting on save
  • IntelliSense and field autocomplete
  • Jump to definition for models and enums

VS Code will automatically prompt anyone who clones the project to install it.

Production Considerations

The starter is designed for production:

  • No dynamic schema generation at runtime
  • Controlled migration execution
  • Environment‑safe credentials
  • Predictable connection behavior
  • Query logging only in development

Integration with Express Starter Foundation

The Prisma MySQL Starter is designed to layer cleanly on top of:

  • Express Starter Foundation
  • Request validation (Zod)

This keeps responsibilities separated:

  • Express handles HTTP
  • Prisma handles data

File & Folder Structure

Loading files...

Installation

npx servercn-cli init prisma-mysql-starter