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

LaunchKit — стартер на **Next.js 15 (App Router) + TypeScript + Prisma + PostgreSQL + Auth.js v5

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

Требования

Быстрый старт: 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 поднимает три сервиса:

| Сервис | Порт на хосте | Назначение | |---|---|---| | app | 3000 | сама сборка Next.js (production build внутри контейнера) | | postgres | 5434 | база данных (внутри сети контейнеров — 5432) | | redis | 6381 | лимитер запросов (внутри сети контейнеров — 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_ENV | development | 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`

Скрипты

Дальше