База данных (Prisma)

LaunchKit использует Prisma + PostgreSQL. Схема в prisma/schema.prisma — это собственная схема вашего приложения: минимальный набор для Auth.js плюс пример доменной модели. Она не зависит ни от какого внешнего пакета — расширяйте и заменяйте её под свой продукт.

Модели

МодельНазначение
User, Account, Session, VerificationTokenобязательные модели адаптера Auth.js v5 (@auth/prisma-adapter). У User есть поле passwordHash для входа по email/паролю (bcrypt); у OAuth-пользователей оно null.
License + enum LicenseStatusзапись о покупке лицензии/подписки: статус (none / pending / active / refunded), тариф, сумма в копейках, провайдер и providerPaymentId. Создаётся и обновляется модулем платежей, читается в кабинете.
Itemпример доменной модели (заголовок + владелец) — чтобы pnpm dev было что показать. Замените на модели своего продукта.

Денежные суммы хранятся в копейках (amountKopecks: Int) — так же, как в платежах, чтобы исключить ошибки округления с плавающей точкой.

Клиент Prisma (singleton)

src/lib/prisma.ts экспортирует единственный экземпляр PrismaClient, закэшированный на globalThis в dev-режиме — иначе hot-reload Next.js плодил бы новые подключения и исчерпал бы пул:

export const prisma: PrismaClient =
  globalForPrisma.prisma ??
  new PrismaClient({
    log: process.env.NODE_ENV === 'development' ? ['warn', 'error'] : ['error'],
  });

Импортируйте его как import { prisma } from '@/lib/prisma' во всех серверных компонентах, route-хендлерах и сервисах — не создавайте new PrismaClient() вручную.

Подключение

Строка подключения берётся из переменной DATABASE_URL:

DATABASE_URL="postgresql://user:password@localhost:5432/launchkit"

При запуске через docker compose up переменная уже прокинута в контейнер app compose-файлом — локальный Postgres ставить не нужно (см. «Введение и установка»).

Миграции

Три скрипта Prisma в package.json:

КомандаЧто делает
pnpm db:generateprisma generate — генерирует типизированный клиент из схемы (запускается автоматически в postinstall).
pnpm db:migrateprisma migrate dev — создаёт и применяет миграцию в dev по изменениям схемы (интерактивно спросит имя миграции).
pnpm db:deployprisma migrate deploy — применяет уже существующие миграции без изменения схемы; используйте на проде и в CI.

Готовых миграций в поставке нет — первый pnpm db:migrate создаст начальную миграцию из текущей схемы под вашу БД. После каждой правки schema.prisma повторяйте pnpm db:migrate, чтобы завести новую миграцию.

Дальше