Skip to content

Matheus-Pozett/Blog-Api

Repository files navigation

📝 Blogs API

Node.js Express Sequelize MySQL Docker JWT Swagger

API RESTful completa para gerenciamento de blogs, desenvolvida com Node.js, Express e Sequelize ORM. Sistema robusto de autenticação JWT, documentação interativa com Swagger e arquitetura em camadas seguindo as melhores práticas de desenvolvimento.

Sobre o Projeto

Esta é uma API profissional para plataforma de blogs que permite aos usuários criar, ler, atualizar e deletar posts, gerenciar categorias e usuários. O projeto implementa autenticação segura, relacionamentos complexos entre entidades e oferece uma documentação interativa completa.

Principais Aprendizados

  • Desenvolvimento de APIs RESTful escaláveis
  • Implementação de autenticação JWT
  • ORM Sequelize e relacionamentos complexos
  • Arquitetura em camadas (MSC)
  • Testes automatizados
  • Documentação de APIs com Swagger
  • Containerização com Docker
  • Boas práticas de código e padrões de projeto

Principais Funcionalidades

  • Autenticação JWT - Sistema seguro de login e autorização
  • Gerenciamento de Usuários - CRUD completo de usuários
  • Sistema de Posts - Criação e gerenciamento de posts com múltiplas categorias
  • Categorias - Organização de conteúdo por categorias
  • Busca de Posts - Pesquisa por título ou conteúdo
  • Documentação Swagger - Documentação interativa da API
  • Docker - Ambiente containerizado pronto para deploy
  • Testes - Cobertura de testes unitários e de integração

Tecnologias Utilizadas

  • Node.js - Ambiente de execução JavaScript
  • Express.js - Framework web minimalista
  • Sequelize - ORM para Node.js
  • MySQL - Banco de dados relacional
  • JWT - Autenticação via tokens
  • Swagger - Documentação da API
  • Docker & Docker Compose - Containerização
  • Jest - Framework de testes
  • ESLint - Linter para padronização de código
  • Joi - Validação de dados

Pré-requisitos

  • Node.js 16 ou superior
  • Docker e Docker Compose
  • npm ou yarn

Como Executar

Com Docker (Recomendado)

  1. Clone o repositório
git clone git@github.com:Matheus-Pozett/Blog-Api.git
cd Blog-Api
  1. Suba os containers
docker-compose up -d --build
  1. Acesse o container
docker exec -it blogs_api bash
  1. Instale as dependências
npm install
  1. Execute as migrations e seeders
npm run prestart
npm run seed
  1. Inicie o servidor
npm run dev

A API estará disponível em http://localhost:3001

📚 Documentação da API

Acesse a documentação interativa Swagger em: http://localhost:3001/api-docs

A documentação Swagger oferece:

  • Interface interativa para testar todos os endpoints
  • Exemplos de requisições e respostas
  • Descrição detalhada de cada endpoint
  • Autenticação JWT integrada

Autenticação

Para endpoints protegidos, você precisa:

  1. Fazer login em /login ou criar usuário em /user
  2. Copiar o token JWT retornado
  3. Clicar em "Authorize" no Swagger e inserir: Bearer {seu-token}
  4. Testar os endpoints protegidos

Endpoints Principais

Autenticação

Método Endpoint Descrição Auth
POST /login Realizar login

Usuários

Método Endpoint Descrição Auth
POST /user Criar novo usuário
GET /user Listar todos os usuários
GET /user/:id Buscar usuário por ID
DELETE /user/me Deletar usuário autenticado

Categorias

Método Endpoint Descrição Auth
POST /categories Criar nova categoria
GET /categories Listar todas as categorias

Posts

Método Endpoint Descrição Auth
POST /post Criar novo post
GET /post Listar todos os posts
GET /post/:id Buscar post por ID
GET /post/search?q=termo Buscar posts por termo
PUT /post/:id Atualizar post
DELETE /post/:id Deletar post

Testes

O projeto possui cobertura de testes unitários e de integração:

# Executar todos os testes
npm test

# Executar testes com cobertura
npm run test-coverage

# Executar teste específico
npm test nome-do-arquivo.test

Cobertura de Testes:

  • ✅ Controllers
  • ✅ Services
  • ✅ Middlewares
  • ✅ Models
  • ✅ Integração de endpoints

Segurança

  • JWT Authentication - Tokens seguros para autenticação
  • Bcrypt - Hash de senhas
  • Validação de Dados - Joi para validação de inputs
  • Error Handling - Tratamento centralizado de erros
  • SQL Injection Protection - Sequelize ORM

Matheus Pozett


About

API RESTful completa para gerenciamento de blogs, desenvolvida com Node.js, Express e Sequelize ORM. Sistema robusto de autenticação JWT, documentação interativa com Swagger e arquitetura em camadas seguindo as melhores práticas de desenvolvimento.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors