Skip to content

NestJS Microservice Monorepo Boilerplate with RMQ transport

Notifications You must be signed in to change notification settings

typicalcoder/nestjs-microservice-monorepo-boilerplate

Repository files navigation

NestJS Microservice Monorepo Boilerplate Backend

Монорепозиторий на 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

Микросервисы

  1. Auth Service - управление аутентификацией пользователей

    • Генерация и проверка JWT токенов
    • Обновление refresh-токенов
    • Отправка кодов подтверждения через SMS
  2. Users Service - управление пользователями

    • Хранение и управление данными пользователей
    • CRUD операции с пользователями
  3. SMS Service - отправка SMS сообщений

    • Интеграция с провайдерами SMS
    • Отправка кодов подтверждения
  4. Core Service - основная функциональность приложения

  5. 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 для передачи данных между сервисами
  • Командный паттерн для межсервисной коммуникации

About

NestJS Microservice Monorepo Boilerplate with RMQ transport

Resources

Stars

Watchers

Forks