https://github.com/jordan-cod/seletivo-bamaq
API desenvolvida como parte do processo seletivo da Bamaq.
https://github.com/jordan-cod/seletivo-bamaq
nestjs postgresql typeorm typescript
Last synced: 2 months ago
JSON representation
API desenvolvida como parte do processo seletivo da Bamaq.
- Host: GitHub
- URL: https://github.com/jordan-cod/seletivo-bamaq
- Owner: jordan-cod
- Created: 2025-04-22T15:27:00.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-01T18:50:38.000Z (about 1 year ago)
- Last Synced: 2025-07-22T22:39:13.904Z (12 months ago)
- Topics: nestjs, postgresql, typeorm, typescript
- Language: TypeScript
- Homepage:
- Size: 3.78 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 📘 API de Gerenciamento de Usuários - NestJS
Este projeto é uma API RESTful desenvolvida com **NestJS** para gerenciamento de usuários, contendo operações de **CRUD** e envio de **e-mails de boas-vindas**.
## 🚀 Funcionalidades
- Criar, buscar, atualizar e remover usuários.
- Validações de entrada com `class-validator`.
- Criptografia de senha com `bcrypt`.
- Envio de e-mail de boas-vindas ao cadastrar usuário com `@nestjs-modules/mailer` e `nodemailer`.
---
## 🧱 Estrutura da Entidade `User`
| Campo | Tipo | Regras |
| ---------- | ------ | -------------------------- |
| `nome` | string | Obrigatório |
| `telefone` | string | Obrigatório, único |
| `email` | string | Obrigatório, único |
| `senha` | string | Obrigatório, criptografado |
---
## 📡 Endpoints
### ➕ `POST /users` - Criar usuário
- **Regras**:
- E-mail e telefone devem ser únicos.
- Senha é criptografada com bcrypt.
- Envio de e-mail de boas-vindas após criação.
- **Validações**:
- `409 Conflict`: e-mail ou telefone já existentes.
- `500 Internal Server Error`: erro no banco de dados.
- `200 OK`: usuário criado com sucesso.
### 📧 Envio de E-mail de Boas-vindas
- **Assunto**: `Bem-vindo ao sistema!`
- **Corpo**: Nome do usuário + mensagem amigável.
- **Erro no envio**:
- Usuário ainda será criado.
- O erro será logado.
- A resposta indicará que o e-mail não foi enviado.
### 🔍 `GET /users/:id` - Buscar usuário por ID
- **Validações**:
- `404 Not Found`: usuário não encontrado.
- `200 OK`: retorna dados do usuário.
### ✏️ `PUT /users/:id` - Atualizar usuário
- **Regras**:
- Pode atualizar: nome, telefone, email, senha.
- Senha continua criptografada.
- E-mail e telefone devem continuar únicos.
- **Validações**:
- `404 Not Found`: usuário não encontrado.
- `409 Conflict`: e-mail ou telefone já utilizados.
- `500 Internal Server Error`: erro ao atualizar.
- `200 OK`: retorna dados atualizados.
### ❌ `DELETE /users/:id` - Remover usuário
- **Validações**:
- `404 Not Found`: usuário não encontrado.
- `500 Internal Server Error`: erro ao remover.
- `200 OK`: confirmação de remoção.
---
## 🛠 Requisitos Técnicos
- ✅ NestJS com estrutura de **Modules, Controllers, Services, DTOs**
- ✅ ORM: **TypeORM** ou **Prisma**
- ✅ **class-validator** para validações
- ✅ **bcrypt** para criptografar senhas
- ✅ **@nestjs-modules/mailer** + **nodemailer** para envio de e-mails
- ✅ Tratamento de erros com **HTTP status apropriados**
- ✅ Uso de **DTOs** para entrada e saída de dados
---
## ▶️ Como rodar o projeto
1. **Clone o repositório**
```bash
git clone https://github.com/jorgemiguelbamaq/teste-gabriel-jordan.git
cd teste-gabriel-jordan
```
2. **Instale as dependências**
Certifique-se de ter o Node.js instalado. Depois, execute o seguinte comando para instalar as dependências:
```bash
npm install
```
3. **Configure as variáveis de ambiente**
Copie o arquivo `.env.example` para `.env` e configure as variáveis de ambiente com as informações do seu banco de dados e mailer (se desejar, o acesso para o nodemailer já está configurado).
4. **Inicie o servidor**
Execute o seguinte comando para iniciar o servidor:
```bash
npm run start:dev
```
5. **Acesse o servidor**
Acesse o servidor em `http://localhost:8080`
## Mailer
```bash
MAIL_HOST=smtp.ethereal.email
MAIL_PORT=587
MAIL_USER=yvette.treutel99@ethereal.email
MAIL_PASS=w8R6fzmzjEh8vWn7FN
MAIL_FROM=no-reply@teste.com
```
Serviço de mailer de testes: [https://ethereal.email/login](https://ethereal.email/login)
Credenciais de acesso:
- Usuário: `yvette.treutel99@ethereal.email`
- Senha: `w8R6fzmzjEh8vWn7FN`