Введение и установка
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 поднимает три сервиса:
| Сервис | Порт на хосте | Назначение |
|---|---|---|
| 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`
Скрипты
pnpm dev/pnpm build/pnpm start— dev/production-сборка/запуск Next.jspnpm typecheck—tsc --noEmitpnpm test/pnpm test:coverage— Vitest (порог покрытия ≥ 80% дляlib/services)pnpm db:generate/pnpm db:migrate/pnpm db:deploy— Prisma
Дальше
- Аутентификация — email/пароль, magic-link, OAuth Google и Яндекс.
- Платежи — YooKassa/Tinkoff, чеки 54-ФЗ, возврат.
- Почта — транзакционные письма и Stalwart SMTP.
- Деплой на свой сервер — Docker-сборка и Coolify.
- CLI —
npx launchkit init. - Доставка и лицензия — как проверить подлинность своей копии.