https://github.com/sub-dev/blog-comments-api-nestjs
https://github.com/sub-dev/blog-comments-api-nestjs
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/sub-dev/blog-comments-api-nestjs
- Owner: Sub-Dev
- License: mit
- Created: 2024-11-06T17:46:36.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-11-14T19:58:35.000Z (over 1 year ago)
- Last Synced: 2025-12-30T22:33:15.143Z (5 months ago)
- Language: TypeScript
- Size: 378 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
📄 Blog Comments API
Esta é uma API para um sistema de comentários de blog, desenvolvida com NestJS, TypeORM e PostgreSQL. O projeto possui autenticação com JWT e documentação com Swagger.
## 📋 Sumário
- [✨ Recursos](#-recursos)
- [🛠️ Tecnologias Utilizadas](#️-tecnologias-utilizadas)
- [🎓 Aprendizados](#-aprendizados)
- [📋 Pré-requisitos](#-pré-requisitos)
- [📥 Instalação](#-instalação)
- [⚙️ Configuração do Ambiente](#️-configuração-do-ambiente)
- [🚀 Executando o Projeto](#-executando-o-projeto)
- [🧪 Testes](#-testes)
- [📘 Endpoints da API](#-endpoints-da-api)
- [📜 Licença](#-licença)
---
## ✨ Recursos
- CRUD para Posts e Comentários
- Autenticação com JWT
- Documentação da API com Swagger
## 🛠️ Tecnologias Utilizadas
-  [NestJS](https://nestjs.com/)
-  [TypeORM](https://typeorm.io/)
-  [PostgreSQL](https://www.postgresql.org/)
-  [Docker](https://www.docker.com/)
-  [JWT](https://jwt.io/)
-  [Swagger](https://swagger.io/)
## 🎓 Aprendizados
Durante o desenvolvimento deste projeto, foram adquiridos e aprimorados conhecimentos em diversas áreas:
- NestJS: Estruturação de um projeto modular com NestJS, incluindo o uso de Controllers, Services e Guards para autenticação.
- TypeORM: Criação e configuração de entidades e relações no banco de dados, além do uso do repositório para operações CRUD.
- Autenticação JWT: Implementação de autenticação segura usando JSON Web Tokens (JWT), com proteção de rotas sensíveis.
- Swagger: Documentação automática da API com Swagger, facilitando a visualização e teste dos endpoints.
- Testes Unitários com Jest: Criação de testes unitários para verificar o comportamento dos módulos principais do projeto, simulando interações com a API.
- Docker: Configuração do ambiente de desenvolvimento e banco de dados com Docker, facilitando a instalação e execução do projeto.
- Boas práticas e segurança: Aplicação de práticas para proteção de dados, como hashing de senhas e uso de variáveis de ambiente para informações sensíveis.
## 📋 Pré-requisitos
-  [Node.js](https://nodejs.org/) (versão 14 ou superior)
-  ou  [npm](https://www.npmjs.com/) ou [Yarn](https://yarnpkg.com/)
-  [PostgreSQL](https://www.postgresql.org/)
## 📥 Instalação
1. Clone o repositório:
```bash
git clone https://github.com/Sub-Dev/blog-comments-api-nestjs
cd blog-comments-api
```
2. Instale as dependências:
```bash
npm install
```
## ⚙️ Configuração do Ambiente
1. Crie um arquivo `.env` na raiz do projeto e defina as variáveis de ambiente:
```env
DB_HOST=localhost
DB_PORT=5432
DB_USER=nestuser
DB_PASSWORD=nestpassword
DB_NAME=blog_comments
JWT_SECRET=chavesecreta
```
2. Certifique-se de ter um banco de dados PostgreSQL configurado com os mesmos detalhes acima.
## 🚀 Executando o Projeto
1. Execute as migrações:
```bash
npm run migration:run
```
2. Inicie o servidor de desenvolvimento:
```bash
npm run start:dev
```
3. A API estará disponível em `http://localhost:3000`.
## 🧪 Testes
Este projeto utiliza Jest para testes. Para rodar os testes, execute:
```bash
npm test
```
## 📘 Endpoints da API
A documentação completa dos endpoints está disponível no Swagger. Após iniciar o servidor, acesse:
🔗 [Swagger Documentation](http://localhost:3000/api)
### Exemplos de Endpoints
#### 🔒 Autenticação
- **POST** `/auth/login` — Autentica um usuário e retorna um token JWT.
#### 👤 Usuários
- **POST** `/users/register` — Cria um novo usuário.
- **POST** `/users/login` — Realiza o login do usuário e retorna o token JWT.
#### 📝 Posts
- **POST** `/posts` — Cria um novo post. _(Requer autenticação)_
- **GET** `/posts` — Retorna todos os posts.
#### 💬 Comentários
- **POST** `/comments/:postId` — Adiciona um comentário a um post específico. _(Requer autenticação)_
## 📜 Licença
Distribuído sob a licença MIT. Veja LICENSE para mais informações.