Введение и установка

LaunchKit — стартер на Next.js 15 (App Router) + TypeScript + Prisma + PostgreSQL + Auth.js v5 + Tailwind + DaisyUI 5. В комплекте: аутентификация, платежи (YooKassa/Tinkoff) с чеками 54-ФЗ, транзакционная почта, Redis-лимитер запросов, Docker-сборка и CLI для быстрого разворачивания новых проектов.

Это руководство описывает то, что вы получаете в поставке — самостоятельный репозиторий launchkit-core без зависимости от какого-либо внешнего монорепозитория: свой package.json, свой lock-файл, своя схема Prisma.

Требования

  • Node.js >= 22
  • pnpm 11.x (устанавливается через corepack enable)
  • PostgreSQL 16 (локально или через Docker)
  • Redis 7 (опционально — без него лимитер запросов работает в памяти процесса)

Быстрый старт: pnpm

cp .env.example .env    # заполните реальными значениями локально — .env никогда не коммитится
pnpm install             # postinstall сам выполнит prisma generate
pnpm db:migrate           # создаёт схему в вашей БД
pnpm dev

Приложение поднимется на http://localhost:3000.

Быстрый старт: Docker Compose

Если не хочется ставить Postgres/Redis локально — весь стек поднимается одной командой:

cp .env.example .env
docker compose up

docker-compose.yml поднимает три сервиса:

СервисПорт на хостеНазначение
app3000сама сборка Next.js (production build внутри контейнера)
postgres5434база данных (внутри сети контейнеров — 5432)
redis6381лимитер запросов (внутри сети контейнеров — 6379)

Порты хоста намеренно нестандартные (5434/6381), чтобы не конфликтовать ни с локальным Postgres/Redis разработчика, ни с dev-инфраструктурой соседних проектов. AUTH_SECRET и AUTH_URL подставляются в app из .env, если он существует, а иначе используются dev-заглушки — так docker compose up поднимается даже на пустом .env (замените AUTH_SECRET перед любым боевым использованием).

Переменные окружения

Полный список — в .env.example, здесь коротко по группам.

Приложение

ПеременнаяНазначение
NEXT_PUBLIC_APP_URLпубличный URL приложения (используется в письмах, метаданных, ссылках возврата)
NODE_ENVdevelopment | production

База данных и Redis

ПеременнаяНазначение
DATABASE_URLстрока подключения PostgreSQL
REDIS_URLстрока подключения Redis; без неё лимитер запросов (rate-limiter-flexible) переходит на in-memory режим

Аутентификация

AUTH_SECRET, AUTH_URL и OAuth-ключи (AUTH_GOOGLE_ID/AUTH_GOOGLE_SECRET, AUTH_YANDEX_ID/AUTH_YANDEX_SECRET) — подробности в «Аутентификация». AUTH_SECRET сгенерируйте командой npx auth secret или openssl rand -base64 32.

Почта, платежи

Разобраны отдельно в «Почта» и «Платежи».

Структура проекта

src/
  app/
    [locale]/          # локализованные маршруты (next-intl): /, /login, /register, /dashboard, /ai, /blog
    api/                # route handlers: auth, checkout, register, health, items, ai
  auth.ts               # полная конфигурация Auth.js (Node runtime)
  auth.config.ts         # edge-safe конфигурация — используется в middleware.ts
  lib/
    payments/            # оркестрация checkout/refund поверх @launchkit/payments
    mail/                 # транспорт + шаблоны писем
    ai/                    # OpenAI-совместимый клиент (опциональный модуль)
    blog/                    # чтение MDX-постов + генерация RSS
  services/               # доменные сервисы (лицензии, доступ)
prisma/
  schema.prisma           # собственная схема (модели Auth.js + License + пример Item)
content/blog/             # посты блога в MDX
cli/
  index.ts                 # `npx launchkit init`

Скрипты

  • pnpm dev / pnpm build / pnpm start — dev/production-сборка/запуск Next.js
  • pnpm typechecktsc --noEmit
  • pnpm test / pnpm test:coverage — Vitest (порог покрытия ≥ 80% для lib/services)
  • pnpm db:generate / pnpm db:migrate / pnpm db:deploy — Prisma

Дальше