База данных (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:generate | prisma generate — генерирует типизированный клиент из схемы (запускается автоматически в postinstall). |
pnpm db:migrate | prisma migrate dev — создаёт и применяет миграцию в dev по изменениям схемы (интерактивно спросит имя миграции). |
pnpm db:deploy | prisma migrate deploy — применяет уже существующие миграции без изменения схемы; используйте на проде и в CI. |
Готовых миграций в поставке нет — первый pnpm db:migrate создаст начальную миграцию из текущей
схемы под вашу БД. После каждой правки schema.prisma повторяйте pnpm db:migrate, чтобы завести
новую миграцию.
Дальше
- Аутентификация — как модели
User/Account/Sessionиспользуются Auth.js. - Платежи — кто создаёт и обновляет записи
License. - Личный кабинет — как статус лицензии и пример CRUD читают базу.