Сайт — пользовательская и административная точка входа в Wraithbound. Один pnpm-monorepo объединяет Next.js frontend, NestJS/Bun backend, tRPC-контракты, Drizzle ORM и подключаемые модули.

Запустить локально

Установка зависимостей, база и раздельный запуск frontend/backend.

Настроить окружение

Переменные окружения, источники секретов и production-ограничения.

Управлять Launcher

Раздел существующей админ-панели, права и связь с control plane.

Опубликовать сборку

Профиль, манифесты, S3/CDN и доступ лаунчера к файлам.

Структура monorepo

Основные интерфейсы

  • /trpc — типизированные запросы сайта;
  • /api/launcher/oauth/* — device OAuth лаунчера;
  • /api/launcher/builds/* — профили сборок и signed URLs;
  • /api/authlib/* — Minecraft session/profile endpoints;
  • /api/launcher/* — legacy/Gravit и HWID endpoints.
Для Electron используются обычные HTTP-контроллеры, а интерфейс сайта преимущественно работает через tRPC.

Граница launcher-server

Административный UI находится в существующем apps/client, но приватный token control plane остаётся на сервере. Страница вызывает tRPC, backend читает secret из файла или secret store и только после проверки RBAC обращается к launcher-server. Браузер не получает ни token, ни прямой admin gRPC-клиент.