Перейти к содержимому

Технологический стек

Источник истины — package.json (корень workspace, версии зависимостей общие для всех сервисов).

ТехнологияВерсияРоль
Node.js22 (alpine в проде)Рантайм
TypeScript~5.9Язык
NestJS^11Фреймворк приложений (@nestjs/common, core, platform-express)
Nx22.0.1Монорепо: сборка, кэш, границы проектов, генераторы
Webpackчерез @nx/webpackСборка приложений в dist/apps/<name>/main.js
SWC~1.5Быстрая транспиляция (тесты, dev)
ТехнологияБиблиотекаНазначение
PostgreSQL@prisma/client ^6.18, prismaОсновная БД, единая схема
Redisredis ^5.9Сессии, коды верификации, кэш
RabbitMQamqplibrabbit-client)Обмен сообщениями с AI-агентом
S3@aws-sdk/client-s3, s3-request-presignerХранилище аватаров/файлов, presigned URL
SMTP@nestjs-modules/mailerОтправка email
Транзакции@nestjs-cls/transactional + -adapter-prisma, nestjs-clsТранзакции через CLS-контекст
БиблиотекаНазначение
@nestjs/jwt, @nestjs/passport, passport-jwtJWT access/refresh, стратегии
bcryptjsХеширование паролей
cookie-parserЧтение httpOnly cookie (refresh-токены)
БиблиотекаНазначение
class-validator, class-transformerВалидация и сериализация DTO (глобальный ValidationPipe, стратегия excludeAll)
joi ^18Валидация переменных окружения в конфиг-модулях
БиблиотекаНазначение
@nestjs/websockets / gatewayWebSocket-чат в ai-agent-service
@nestjs/axios, axiosHTTP-клиент (walrider-http.service и т.п.)
БиблиотекаНазначение
@nestjs/scheduleКрон-задачи (например, очистка токенов)
@nestjs/swaggerOpenAPI-документация каждого сервиса
dayjsРабота с датами
slugifyГенерация slug
uuidИдентификаторы (в т.ч. X-Request-Id)
ИнструментНазначение
Jest (@nx/jest, ts-jest)Unit-тесты (*.spec.ts), e2e-проекты apps/*-e2e
ESLint (@nx/eslint, typescript-eslint)Линтинг + границы модулей Nx
PrettierФорматирование
PM2Запуск в проде (pm2-runtime, кластеризация по инстансам)
Docker / DokployКонтейнеризация и деплой (см. deployment)

Все HTTP-сервисы включают VersioningType.URI и глобальный префикс apiadmin-apiapi/v1). Итоговые пути вида /api/v1/.... Swagger поднимается на /apiadmin-api/api/v1/docs).