Шаблон NestJS MongoDB Blog API – полнофункциональный REST-бэкэнд для блогов.

Для создания масштабируемой серверной части блога необходима хорошо структурированная архитектура, система аутентификации и надлежащим образом документированные API. NestJS MongoDB Blog API — это готовый к использованию шаблон серверной части, разработанный для того, чтобы помочь разработчикам быстро создавать современные платформы для блогов, используя NestJS, MongoDB JWT authenticationи документацию Swagger .

Этот проект предоставляет полноценный RESTful API, включающий модули для пользователей, публикаций, категорий, тегов, комментариев, аутентификации и управления доступом на основе ролей .

Репозиторий: https://github.com/bfotool/nestjs-mongodb-blog-base

Что такое NestJS MongoDB Blog API?

NestJS MongoDB Blog API — это шаблон бэкэнда с открытым исходным кодом, созданный на основе NestJS 11 и MongoDB, который предоставляет полнофункциональный REST API для блога.

Он предназначен для того, чтобы служить фундаментом для строительства:

  • Блог-платформы

  • Безголовые системы управления контентом(CMS)

  • API для публикации контента

  • Веб-сайты с документацией

  • Блоги-портфолио разработчиков

Проект использует модульную архитектуру, рекомендованную NestJS, что обеспечивает масштабируемость и удобство сопровождения.

Репозиторий: https://github.com/bfotool/nestjs-mongodb-blog-base

Основные характеристики

Аутентификация и авторизация

API включает в себя защищенную систему аутентификации с использованием JWT-токенов.

К основным функциям аутентификации относятся:

  • Токены доступа и обновления JWT

  • Управление доступом на основе ролей(RBAC)

  • Хэширование паролей с помощью bcrypt

  • Защита маршрутов API с помощью Guards

  • Механизм обновления токенов

Поддерживаются три роли пользователей по умолчанию:

  • Администратор

  • Автор

  • Читатель

Это упрощает управление правами доступа к различным конечным точкам API.

Полные модули блога

Проект включает в себя несколько полностью реализованных модулей, охватывающих весь основной функционал блога.

Модуль аутентификации

Обрабатывает аутентификацию и пользовательские сессии.

В число конечных точек входят:

  • POST /auth/register

  • POST /auth/login

  • POST /auth/refresh

  • POST /auth/logout

  • GET /auth/profile

Модуль пользователей

Управляет учетными записями и профилями пользователей.

Конечные точки:

  • GET /users

  • GET /users/:id

  • PATCH /users/:id

  • DELETE /users/:id

Для операций записи требуются права администратора .

Модуль сообщений

Модуль "Сообщения" управляет содержимым блога.

В число функций входят:

  • Пагинация

  • Фильтрация по категории, тегу или автору.

  • Сортировка

  • Полнотекстовый поиск

  • Рекомендуемые публикации

Конечные точки:

  • GET /posts

  • GET /posts/featured

  • GET /posts/:slug

  • POST /posts

  • PATCH /posts/:id

  • DELETE /posts/:id

Модуль категорий

Организует записи в блоге по категориям.

Конечные точки:

  • GET /categories

  • GET /categories/:slug

  • POST /categories

  • PATCH /categories/:id

  • DELETE /categories/:id

Модуль тегов

Позволяет гибко добавлять теги к записям в блоге.

Конечные точки:

  • GET /tags

  • GET /tags/:slug

  • POST /tags

  • PATCH /tags/:id

  • DELETE /tags/:id

Модуль комментариев

Поддерживает ветки комментариев и вложенные ответы.

Конечные точки:

  • GET /comments/post/:postId

  • GET /comments/:id/replies

  • POST /comments

  • PATCH /comments/:id

  • DELETE /comments/:id

Возможности API

Пагинация

Все конечные точки для отображения списков поддерживают пагинацию.

Пример:

GET /posts?page=1&limit=6

Фильтрация

Публикации можно фильтровать по категории, тегу или автору.

Пример:

GET /posts?category=web-development

Полнотекстовый поиск

Функция поиска реализована в записях.

Пример:

GET /posts?search=nestjs+mongodb

Сортировка

Ответы API можно сортировать по различным полям.

Пример:

GET /posts?sortBy=createdAt&sortOrder=desc

Автоматическая генерация слагов

При создании записей система автоматически генерирует удобный для URL-адреса слаг из заголовка с помощью функции slugify .

Пример:

Building REST APIs with NestJS 
→ building-rest-apis-with-nestjs 

Расчет времени чтения

API автоматически рассчитывает приблизительное время чтения на основе длины содержимого сообщений.

Единый формат ответа API

Все ответы имеют стандартную структуру:

{ 
  "success": true, 
  "data": {}, 
  "timestamp": "2026-01-01T10:00:00Z" 
} 

Это улучшает интеграцию с фронтендом и отладку.

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

Бэкенд разработан с использованием современного стека технологий Node.js.

Слой Технологии
Рамки NestJS 11
Язык TypeScript 5.7
База данных MongoDB 8
ОДМ Мангуст 8
Аутентификация Passport.js + JWT
Проверка валидатор класса
Документация по API Swagger OpenAPI
Безопасность паролей bcrypt
Генератор слизней слизнеобразовать
Тестирование Шутка

Структура проекта

Проект реализуется в рамках модульной архитектуры.

src/ 
├── auth/ 
├── users/ 
├── posts/ 
├── categories/ 
├── tags/ 
├── comments/ 
├── common/ 
└── seed/ 

Важные компоненты включают в себя:

  • Проверка DTO

  • Схемы мангуста

  • Глобальные фильтры исключений

  • Перехватчики ответов

  • Охранники JWT

  • Декораторы ролей

Такая структура обеспечивает организованность и масштабируемость кодовой базы.

Как установить и запустить проект

Предварительные требования

Перед установкой убедитесь, что у вас есть:

  • Node.js 18.17+

  • MongoDB 6+

  • npm, yarn или pnpm

Клонируйте репозиторий

git clone https://github.com/bfotool/nestjs-mongodb-blog-base 
cd nestjs-mongodb-blog-base 

Установите зависимости

npm install

Настройка переменных среды

Скопируйте пример файла среды:

cp .env.example .env

Обновите следующие значения:

MONGODB_URI= 
JWT_ACCESS_SECRET= 
JWT_REFRESH_SECRET= 

Заполните базу данных

Заполните базу данных примерами данных:

npm run seed

Для сброса и повторной инициализации:

npm run seed:refresh

Запустите сервер разработки.

npm run start:dev

Базовый URL API:

http://localhost:3000/api/v1

Документация Swagger:

http://localhost:3000/api/docs

Исходные данные

Скрипт генерации начальных данных создает тестовые данные для проверки.

Сущность Считать
Пользователи 5
Категории 5
Теги 28
Сообщения 10
Комментарии 6

Учетные данные для входа по умолчанию

Пароль для всех зарегистрированных пользователей:

admin123

Счета:

Роль Электронная почта
Администратор [email protected]
Автор [email protected]
Автор [email protected]
Автор [email protected]
Читатель [email protected]

Документация по API Swagger

Интерактивная документация по API доступна по адресу:

http://localhost:3000/api/docs

Swagger предоставляет:

  • Интерактивное тестирование конечных точек

  • JWT authenticationподдерживать

  • Документация по схемам запроса и ответа

Почему стоит использовать этот репозиторий?

API для блогов на базе MongoDB от NestJS — это мощная отправная точка для разработчиков, создающих современный бэкэнд для блогов.

К преимуществам относятся:

  • Чистая модульная архитектура NestJS

  • Встроенная аутентификация и RBAC

  • Готовая к использованию документация по API Swagger

  • Интеграция с MongoDB с использованием Mongoose.

  • система заполнения базы данных

  • Готовая к производству структура проекта

Репозиторий: https://github.com/bfotool/nestjs-mongodb-blog-base