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.
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.
- 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
- 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
- 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
- Node.js 16 ou superior
- Docker e Docker Compose
- npm ou yarn
- Clone o repositório
git clone git@github.com:Matheus-Pozett/Blog-Api.git
cd Blog-Api- Suba os containers
docker-compose up -d --build- Acesse o container
docker exec -it blogs_api bash- Instale as dependências
npm install- Execute as migrations e seeders
npm run prestart
npm run seed- Inicie o servidor
npm run devA API estará disponível em http://localhost:3001
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
Para endpoints protegidos, você precisa:
- Fazer login em
/loginou criar usuário em/user - Copiar o token JWT retornado
- Clicar em "Authorize" no Swagger e inserir:
Bearer {seu-token} - Testar os endpoints protegidos
| Método | Endpoint | Descrição | Auth |
|---|---|---|---|
| POST | /login |
Realizar login | ❌ |
| 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 | ✅ |
| Método | Endpoint | Descrição | Auth |
|---|---|---|---|
| POST | /categories |
Criar nova categoria | ✅ |
| GET | /categories |
Listar todas as categorias | ✅ |
| 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 | ✅ |
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.testCobertura de Testes:
- ✅ Controllers
- ✅ Services
- ✅ Middlewares
- ✅ Models
- ✅ Integração de endpoints
- 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