Files
image-platform/apps/backend/src/main.ts
S.Gromov 98295d0569 feat: добавить новый backend и cabinet
- добавлен новый Nest backend для auth, projects и project access tokens
- добавлена control-plane схема БД и миграция Drizzle
- перенесён старый backend в old-backend
- добавлен React/Vite cabinet с auth-only входом и Mantine layout
- обновлены workspace scripts и lockfile
2026-05-12 09:22:04 +03:00

57 lines
2.0 KiB
TypeScript

import { NestFactory } from "@nestjs/core"
import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger"
import { AppModule } from "./app.module"
async function bootstrap() {
const app = await NestFactory.create(AppModule)
app.setGlobalPrefix("api")
app.enableShutdownHooks()
const openApiConfig = new DocumentBuilder()
.setTitle("Assets Delivery Platform API")
.setDescription(
"Control plane API для авторизации, проектов и токенов доступа. Image-модуль будет переноситься из old-backend отдельным vertical slice.",
)
.setVersion("0.1.0")
.addBearerAuth(
{
bearerFormat: "Admin session token",
description: "Токен сессии администратора, полученный через /api/auth/login.",
scheme: "bearer",
type: "http",
},
"adminAuth",
)
.addBearerAuth(
{
bearerFormat: "Project access token",
description: "Токен доступа к проекту для headless API.",
scheme: "bearer",
type: "http",
},
"projectAccessToken",
)
.addTag("system", "Системные endpoints для проверки состояния backend.")
.addTag("auth", "Авторизация администратора без публичной регистрации.")
.addTag("projects", "Control plane для управления проектами.")
.addTag("project-access-tokens", "Токены доступа к проектам для server-side интеграций.")
.build()
const openApiDocument = SwaggerModule.createDocument(app, openApiConfig)
SwaggerModule.setup("docs", app, openApiDocument, {
jsonDocumentUrl: "docs-json",
swaggerOptions: {
persistAuthorization: true,
},
})
const port = Number.parseInt(process.env.BACKEND_PORT ?? process.env.API_PORT ?? "3001", 10)
await app.listen(port)
}
void bootstrap()