Источник истины — package.json (корень workspace, версии зависимостей общие для всех сервисов).
| Технология | Версия | Роль |
|---|
| Node.js | 22 (alpine в проде) | Рантайм |
| TypeScript | ~5.9 | Язык |
| NestJS | ^11 | Фреймворк приложений (@nestjs/common, core, platform-express) |
| Nx | 22.0.1 | Монорепо: сборка, кэш, границы проектов, генераторы |
| Webpack | через @nx/webpack | Сборка приложений в dist/apps/<name>/main.js |
| SWC | ~1.5 | Быстрая транспиляция (тесты, dev) |
| Технология | Библиотека | Назначение |
|---|
| PostgreSQL | @prisma/client ^6.18, prisma | Основная БД, единая схема |
| Redis | redis ^5.9 | Сессии, коды верификации, кэш |
| RabbitMQ | amqplib (в rabbit-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-jwt | JWT access/refresh, стратегии |
bcryptjs | Хеширование паролей |
cookie-parser | Чтение httpOnly cookie (refresh-токены) |
| Библиотека | Назначение |
|---|
class-validator, class-transformer | Валидация и сериализация DTO (глобальный ValidationPipe, стратегия excludeAll) |
joi ^18 | Валидация переменных окружения в конфиг-модулях |
| Библиотека | Назначение |
|---|
@nestjs/websockets / gateway | WebSocket-чат в ai-agent-service |
@nestjs/axios, axios | HTTP-клиент (walrider-http.service и т.п.) |
| Библиотека | Назначение |
|---|
@nestjs/schedule | Крон-задачи (например, очистка токенов) |
@nestjs/swagger | OpenAPI-документация каждого сервиса |
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 и глобальный префикс api (у admin-api — api/v1). Итоговые пути вида /api/v1/.... Swagger поднимается на /api (у admin-api — /api/v1/docs).