Для создания масштабируемой серверной части блога необходима хорошо структурированная архитектура, система аутентификации и надлежащим образом документированные 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/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
Модуль пользователей
Управляет учетными записями и профилями пользователей.
Конечные точки:
GET /usersGET /users/:idPATCH /users/:idDELETE /users/:id
Для операций записи требуются права администратора .
Модуль сообщений
Модуль "Сообщения" управляет содержимым блога.
В число функций входят:
Пагинация
Фильтрация по категории, тегу или автору.
Сортировка
Полнотекстовый поиск
Рекомендуемые публикации
Конечные точки:
GET /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
Модуль категорий
Организует записи в блоге по категориям.
Конечные точки:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
Модуль тегов
Позволяет гибко добавлять теги к записям в блоге.
Конечные точки:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
Модуль комментариев
Поддерживает ветки комментариев и вложенные ответы.
Конечные точки:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /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



