API de usuários e autenticação

API REST desenvolvida com Node.js e MongoDB para gerenciamento de usuários e autenticação via JWT.
Ideal para aplicações que exigem controle de acesso, login seguro e rotas protegidas.

git: https://github.com/fxshelll/api-users-auth

Tecnologias Utilizadas


Estrutura do Projeto

api-users-auth/
├── 📂 src/                     # Código-fonte principal
│   ├── 📂 config/              # Configuração da conexão com MongoDB
│   ├── 📂 controllers/         # Funções que recebem as requisições HTTP
│   ├── 📂 middleware/          # Middlewares de autenticação e autorização
│   ├── 📂 models/              # Modelos de dados (ex: User)
│   ├── 📂 routes/              # Definição das rotas da API
│   ├── 📂 services/            # Regras de negócio (ex: login, cadastro)
│   └── 📂 utils/               # Funções auxiliares (ex: hash de senha, JWT)
├── 📂 tests/                   # Testes automatizados com Jest e Supertest
├── 📂 docs/                    # Documentação adicional (ex: diagramas, notas)
├── 📄 .env                     # Variáveis de ambiente (porta, URI, segredo JWT)
├── 📄 .gitignore               # Arquivos e pastas ignorados pelo Git
├── 📄 Dockerfile               # Configuração do container da API
├── 📄 docker-compose.yml       # Orquestração dos containers (API + MongoDB)
├── 📄 README.md                # Manual do projeto
├── 📄 package.json             # Configuração do projeto Node.js
└── 📄 swagger.yaml             # Documentação dos endpoints via Swagger

Tecnologias

Node.js, Express, MongoDB (Mongoose), JWT, bcrypt, Swagger, Jest, Docker.

Como Rodar o Projeto

Rodando com Docker

docker compose up --build

Acesse:

API: http://localhost:3000 Swagger: http://localhost:3000/api-docs

Autenticação

A autenticação é feita via JWT. Após login, o token deve ser enviado no header:

exemplo, registro de usuário:

➜  api-users-auth git:(master) ✗ curl -X POST http://localhost:3000/auth/register \
  -H "Content-Type: application/json" \
  -d '{"name":"Felipe","email":"felipe@example.com","password":"senha123"}'

{"user":{"name":"Felipe","email":"felipe@example.com","role":"user","_id":"691ccc9035416aa48b4176f6","createdAt":"2025-11-18T19:44:16.950Z","updatedAt":"2025-11-18T19:44:16.950Z","__v":0},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2OTFjY2M5MDM1NDE2YWE0OGI0MTc2ZjYiLCJlbWFpbCI6ImZlbGlwZUBleGFtcGxlLmNvbSIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNzYzNDk1MDU2LCJleHAiOjE3NjM1ODE0NTZ9.ll6c7UcH7zrJRkZpTLOufvZv2UCjug5VZ5sFreJI9tw"}%

Ele gera o ID do usuário e o token.