No description
  • JavaScript 97.6%
  • HTML 1.4%
  • CSS 0.7%
  • Shell 0.2%
Find a file
2025-05-20 17:06:43 -04:00
coverage Ajuste no seed 2025-05-09 15:52:43 -04:00
documentacao Atualizando documentação swagger /auth 2025-05-14 17:07:08 -04:00
src Atualizando repo 2025-05-20 17:06:43 -04:00
uploads inciando o projeto 2025-04-01 20:11:56 -04:00
.editorconfig inciando o projeto 2025-04-01 20:11:56 -04:00
.env.example Criando deploy 2025-05-20 00:41:04 -04:00
.gitignore inciando o projeto 2025-04-01 20:11:56 -04:00
deploy.sh Atualizando repo 2025-05-20 17:06:43 -04:00
docker-compose.yml Ajuste no seed para trabalhar apenas com .jpg para as fotos 2025-05-17 23:09:21 -04:00
Dockerfile inciando o projeto 2025-04-01 20:11:56 -04:00
eslint.config.js inciando o projeto 2025-04-01 20:11:56 -04:00
jest.setup.js inciando o projeto 2025-04-01 20:11:56 -04:00
nodemon.json inciando o projeto 2025-04-01 20:11:56 -04:00
package-lock.json Atualizando sistemas de filtragem 2025-05-19 16:55:03 -04:00
package.json Atualizando sistemas de filtragem 2025-05-19 16:55:03 -04:00
README.md Atualizando models e documenetação swagger. 2025-04-16 17:19:12 -04:00
server.js Ajuste no seed 2025-05-09 15:52:43 -04:00

🚀 User‑Service API (Node.js + MongoDB)

Microserviço responsável por autenticação, autorização (RBAC) e gestão de:

  • Usuários, grupos, rotas, unidades
  • Domínios “Meals”: cursos, turmas, estudantes, projetos, estágios, refeições individuais e por turma

Parte do ecossistema Event Grid, esta API REST expõe endpoints seguros com JWT (access + refresh), documentação OpenAPI 3 e suíte completa de testes.


📌 Índice

  1. Recursos
  2. Tecnologias
  3. Arquitetura & Estrutura
  4. Guia rápido
  5. Variáveis de ambiente
  6. Scripts NPM
  7. Docker
  8. Documentação da API
  9. Seeds
  10. Testes & Lint
  11. Contribuindo
  12. Licença

Recursos

Domínio Endpoints Observações
Auth /login, /logout, /token, /token/revoke, /pass JWT, refresh, revogação; upload de avatar opcional
Usuários /usuarios CRUD, foto 400×400 redimensionada via Sharp
Grupos /grupos Permissões granulares de rotas
Rotas /rotas Registro dinâmico para RBAC
Unidades /unidades Escopo físico/lógico
Meals /cursos, /turmas, /estudantes, /estagios, /projetos, /refeicoes, /refeicoesTurmas Paginação, filtros, joins (populate)
CommonResponse Saída unificada + error handler global
Docs /api-docs Swagger‑UI OpenAPI 3 gerada via src/docs

Tecnologias

Camada Libs
Servidor Node.js 18+, Express 4, ES Modules
Segurança Helmet, CORS, Compression, bcrypt, jsonwebtoken
Persistência MongoDB 6 + Mongoose 8 (mongoose-paginate-v2, aggregate-paginate)
Validação Zod em todos os DTOs
Documentação swagger-ui-express, swagger-jsdoc
Testes Jest 29, mongodb-memory-server, supertest, sinon
Lint ESLint 9 (config recomendada + regras extras)
Dev tools nodemon, dotenv, winston (daily-rotate-file)

Arquitetura & Estrutura

Design inspirado em arquitetura hexagonal:
controllers → services → repositories → models


⚡ Guia rápido

🔁 Clone

git clone https://github.com/<usuario>/user-service.git
cd user-service

Dependências

npm install

⚙️ Variáveis de ambiente

cp .env.example .env # edite DB_URL, JWT_SECRET, etc.

🧪 Mongo local (opcional)

docker run -d --name mongo -p 27017:27017 mongo:6

🚀 Servidor dev (hot reload)

npm run dev

📄 Swagger UI

http://localhost:5011/docs


Variáveis de ambiente

Server

PORT=5011
NODE_ENV=development

Database

DB_URL=mongodb://localhost:27017/user-service

JWT

JWT_SECRET=uma-frase-super-secreta
JWT_EXPIRES_IN=1h
REFRESH_EXPIRES_IN=7d

Swagger

SWAGGER_DEV_URL=http://localhost:5011
SWAGGER_PROD_URL=https://api.meudominio.com

Scripts NPM

Script Descrição
npm run dev nodemon + hot reload
npm start Produção (node server.js)
npm run seed Executa src/seeds/seeds.js para popular o banco
npm test Testes com Jest e cobertura
npx eslint . Lint em todo o projeto

Docker

Build único

docker build -t user-service .
docker run -d --env-file .env -p 5011:5011 user-service

Orquestração (Docker Compose)

docker-compose.yml já inclui o serviço:

services:
  user-service:
    build: .
    container_name: user-service-container
    ports:
      - "5011:5011"
    command: "npm start"
    restart: always

Documentação da API

  • Swagger‑UI: GET /api-docs
  • Spec JSON: GET /docs.json

Principais tags:
Auth, Usuários, Grupos, Rotas, Unidades, Cursos, Turmas, Estudantes, Estágios, Projetos, Refeições, RefeiçõesTurmas.

Todos os endpoints suportam paginação (page, limit) e filtros via query string.


Seeds

Popule rapidamente o banco com dados realistas:

npm run seed

Cria mais de 2.500 registros com faker-br, cobrindo:

  • Unidades
  • Rotas
  • Grupos
  • Usuários
  • Cursos
  • Turmas
  • Estudantes
  • Projetos
  • Estágios
  • Refeições

Testes & Lint

Testes unitários + cobertura

npm test
  • Configurado com ES Modules (babel-jest)
  • mongodb-memory-server cria banco em RAM
  • jest.setup.js silencia logs (console.log/error) durante testes

ESLint

npx eslint .

Contribuindo

  1. Fork → nova branch → pull request
  2. Mantenha o padrão CommonResponse
  3. Adicione/atualize testes para suas mudanças
  4. Nunca comite secrets (.env, JWT_SECRET, etc.)

📄 Licença

Distribuído sob a licença MIT © Gilberto Silva