Монорепозиторий на NestJS с микросервисной архитектурой.
Это бэкенд-проект на фреймворке NestJS, реализующий микросервисную архитектуру для создания масштабируемого и эффективного серверного приложения. Проект предназначен для разработчиков и специалистов по сопровождению бэкенд-сервисов.
Основные функции системы:
- Управление пользователями и аутентификация
- Маршрутизация запросов через API Gateway
- Межсервисная коммуникация через RabbitMQ
- Интеграция с SMS-сервисами
apps/ # Микросервисы
├── auth/ # Сервис аутентификации
├── core/ # Основной сервис
├── gateway/ # API Gateway
├── sms/ # Сервис отправки SMS
└── users/ # Сервис управления пользователями
libs/ # Общие библиотеки
├── bootstrap/ # Базовые компоненты и утилиты
└── microservice/ # Инфраструктура межсервисной коммуникации
- Фреймворк: NestJS v11.1.6
- Язык: TypeScript v5.9.2
- База данных: MongoDB (MikroORM)
- Кэширование: Redis
- Очередь сообщений: RabbitMQ (AMQP)
- Аутентификация: JWT
- Логирование: Winston
- Валидация: class-validator, class-transformer
-
Auth Service - управление аутентификацией пользователей
- Генерация и проверка JWT токенов
- Обновление refresh-токенов
- Отправка кодов подтверждения через SMS
-
Users Service - управление пользователями
- Хранение и управление данными пользователей
- CRUD операции с пользователями
-
SMS Service - отправка SMS сообщений
- Интеграция с провайдерами SMS
- Отправка кодов подтверждения
-
Core Service - основная функциональность приложения
-
Gateway Service - API Gateway
- Маршрутизация запросов к микросервисам
- Управление доступом через Guards
- Преобразование данных через DTO
- Все endpoints по умолчанию защищены AtGuard (Access Token Guard)
- Обновление токенов защищено RtGuard (Refresh Token Guard)
- Публичный метод авторизации не защищен Guards
- Отправка кодов подтверждения защищена капчей
- Node.js >= 22.0.0
- pnpm >= 10.15.1
- Доступ к MongoDB
- Доступ к Redis
- Доступ к RabbitMQ
$ pnpm install$ npm run start:debug$ npm run build- Dockerfile для контейнеризации
- GitHub workflow для деплоя на Kubernetes через ArgoCD
Проект следует принципам:
- Чистой архитектуры NestJS
- Модульного дизайна
- Внедрения зависимостей
- Событийной архитектуры
- SOLID принципам
При разработке используются:
- Prettier для форматирования кода
- ESLint для статической проверки
- DTO для передачи данных между сервисами
- Командный паттерн для межсервисной коммуникации