Modelo de API para blog NestJS MongoDB – Backend REST completo para blogs

Construir um backend de blog escalável requer uma arquitetura bem estruturada, um sistema de autenticação e APIs devidamente documentadas. A API de Blog NestJS MongoDB é um modelo de backend pronto para produção, projetado para ajudar desenvolvedores a criar rapidamente plataformas de blog modernas usando NestJS, MongoDB JWT authenticatione documentação Swagger .

Este projeto fornece uma API RESTful completa, incluindo módulos para usuários, posts, categorias, tags, comentários, autenticação e controle de acesso baseado em funções .

Repositório: https://github.com/bfotool/nestjs-mongodb-blog-base

O que é a API de blog do NestJS MongoDB?

A API de Blog NestJS MongoDB é um modelo de backend de código aberto construído com NestJS 11 e MongoDB que fornece uma API REST de blog totalmente funcional.

Ele foi projetado para servir de base para a construção de:

  • Plataformas de blog

  • Sistemas CMS sem interface gráfica

  • APIs de publicação de conteúdo

  • Sites de documentação

  • Blogs de portfólio de desenvolvedores

O projeto segue a arquitetura modular recomendada pelo NestJS, garantindo escalabilidade e facilidade de manutenção.

Repositório: https://github.com/bfotool/nestjs-mongodb-blog-base

Principais características

Autenticação e Autorização

A API inclui um sistema de autenticação seguro que utiliza tokens JWT.

As principais funcionalidades de autenticação incluem:

  • Tokens de acesso e atualização JWT

  • Controle de acesso baseado em funções(RBAC)

  • Criptografia de senhas com bcrypt

  • Rotas de API protegidas usando Guards

  • Mecanismo de atualização de token

São suportadas três funções de usuário padrão:

  • Administrador

  • Autor

  • Leitor

Isso facilita o gerenciamento de permissões em diferentes endpoints da API.

Módulos completos para blog

O projeto inclui diversos módulos totalmente implementados que abrangem todas as funcionalidades principais de um blog.

Módulo de Autenticação

Gerencia a autenticação e as sessões de usuário.

Os pontos de extremidade incluem:

  • POST /auth/register

  • POST /auth/login

  • POST /auth/refresh

  • POST /auth/logout

  • GET /auth/profile

Módulo de Usuários

Gerencia contas e perfis de usuários.

Pontos finais:

  • GET /users

  • GET /users/:id

  • PATCH /users/:id

  • DELETE /users/:id

As operações de escrita exigem permissões de administrador .

Módulo de Postagens

O módulo de posts gerencia o conteúdo do blog.

As funcionalidades incluem:

  • Paginação

  • Filtrar por categoria, etiqueta ou autor.

  • Classificação

  • Pesquisa de texto completo

  • Postagens em destaque

Pontos finais:

  • GET /posts

  • GET /posts/featured

  • GET /posts/:slug

  • POST /posts

  • PATCH /posts/:id

  • DELETE /posts/:id

Módulo de Categorias

Organiza as postagens do blog em categorias.

Pontos finais:

  • GET /categories

  • GET /categories/:slug

  • POST /categories

  • PATCH /categories/:id

  • DELETE /categories/:id

Módulo de Etiquetas

Permite a marcação flexível de posts de blog.

Pontos finais:

  • GET /tags

  • GET /tags/:slug

  • POST /tags

  • PATCH /tags/:id

  • DELETE /tags/:id

Módulo de comentários

Suporta tópicos de comentários e respostas aninhadas.

Pontos finais:

  • GET /comments/post/:postId

  • GET /comments/:id/replies

  • POST /comments

  • PATCH /comments/:id

  • DELETE /comments/:id

Funcionalidades da API

Paginação

Todos os endpoints de lista suportam paginação.

Exemplo:

GET /posts?page=1&limit=6

Filtragem

As publicações podem ser filtradas por categoria, etiqueta ou autor.

Exemplo:

GET /posts?category=web-development

Pesquisa de texto completo

A funcionalidade de busca está implementada nas postagens.

Exemplo:

GET /posts?search=nestjs+mongodb

Classificação

As respostas da API podem ser classificadas por diferentes campos.

Exemplo:

GET /posts?sortBy=createdAt&sortOrder=desc

Geração automática de lesmas

Ao criar publicações, o sistema gera automaticamente um slug amigável para URL a partir do título, utilizando o slugify .

Exemplo:

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

Cálculo do tempo de leitura

A API calcula automaticamente o tempo estimado de leitura com base na extensão do conteúdo das postagens.

Formato de resposta da API consistente

Todas as respostas seguem uma estrutura padrão:

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

Isso melhora a integração e a depuração do frontend.

Conjunto de tecnologias

O backend foi construído usando uma pilha Node.js moderna.

Camada Tecnologia
Estrutura NestJS 11
Linguagem TypeScript 5.7
Banco de dados MongoDB 8
ODM Mangusto 8
Autenticação Passport.js + JWT
Validação validador de classe
Documentação da API Swagger OpenAPI
Segurança de senha bcrypt
Gerador de Lesmas slugify
Testando Jest

Estrutura do Projeto

O projeto segue uma arquitetura modular.

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

Os componentes importantes incluem:

  • Validação DTO

  • Esquemas de mangusto

  • Filtros de exceção globais

  • Interceptores de resposta

  • Guardas JWT

  • Decoradores de papéis

Essa estrutura mantém a base de código organizada e escalável.

Como instalar e executar o projeto

Pré-requisitos

Antes de instalar, certifique-se de que você tem:

  • Node.js 18.17+

  • MongoDB 6+

  • npm, yarn ou pnpm

Clonar o repositório

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

Instalar dependências

npm install

Configurar variáveis ​​de ambiente

Copie o arquivo de ambiente de exemplo:

cp .env.example .env

Atualize os seguintes valores:

MONGODB_URI= 
JWT_ACCESS_SECRET= 
JWT_REFRESH_SECRET= 

Inicialize o banco de dados

Preencha o banco de dados com dados de exemplo:

npm run seed

Para reiniciar e recomeçar:

npm run seed:refresh

Inicie o servidor de desenvolvimento.

npm run start:dev

URL base da API:

http://localhost:3000/api/v1

Documentação Swagger:

http://localhost:3000/api/docs

Dados padrão predefinidos

O script de inicialização gera dados de amostra para teste.

Entidade Contar
Usuários 5
Categorias 5
Etiquetas 28
Postagens 10
Comentários 6

Credenciais de login padrão

Senha para todos os usuários com privilégios de seed:

admin123

Contas:

Papel E-mail
Administrador [email protected]
Autor [email protected]
Autor [email protected]
Autor [email protected]
Leitor [email protected]

Documentação da API Swagger

A documentação interativa da API está disponível em:

http://localhost:3000/api/docs

Swagger oferece:

  • Teste de endpoint interativo

  • JWT authenticationapoiar

  • Documentação do esquema de requisição e resposta

Por que usar este repositório?

A API de blog do NestJS para MongoDB é um ponto de partida poderoso para desenvolvedores que criam um backend de blog moderno.

As vantagens incluem:

  • Arquitetura modular limpa do NestJS

  • Autenticação integrada e RBAC

  • Documentação da API Swagger pronta para uso

  • Integração do MongoDB usando o Mongoose

  • Sistema de inicialização de banco de dados

  • Estrutura de projeto pronta para produção

Repositório: https://github.com/bfotool/nestjs-mongodb-blog-base