Skip to content

ddouglss/vendergas-backend

Repository files navigation

🔐 VenderGas - Backend API

API RESTful para gestão de empresas, produtos, clientes e pedidos, desenvolvida em Node.js, com autenticação JWT e autorização baseada em papéis (user, admin e superadmin).


🧰 Tecnologias Utilizadas

  • Node.js + Express
  • MongoDB + Mongoose
  • JWT para autenticação
  • Controle de acesso baseado em papéis (RBAC)
  • Jest + Supertest para testes
  • Docker + Docker Compose
  • Railway (Deploy)

⚙️ Instalação

📁 Clone o Repositório

git clone https://github.com/ddouglss/vendergas-backend.git
cd vendergas-backend

📦 Instale as Dependências

npm install

🔑 Configure o .env

JWT_SECRET=VENDERGAS
MONGO_URI=mongodb://localhost:27017/desafio-db
FRONTEND_URL=https://localhost:3000

🐳 Docker

Iniciar com Docker:

docker-compose up --build

Ambiente de Produção (exemplo Railway):

MONGO_URI=mongodb://usuario:senha@host:porta/database?authSource=admin

🔐 Autenticação e Autorização

O projeto usa JWT para autenticação e middleware de autorização baseado em roles.

Roles disponíveis:

  • user: acesso básico
  • admin: pode criar, editar e excluir recursos da empresa
  • superadmin: acesso total ao sistema

Middleware de proteção:

auth        // verifica se o token JWT é válido
authorize('admin') // permite apenas admins
authorize('admin', 'superadmin') // múltiplas permissões

⚠️ Todas as rotas protegidas exigem envio do JWT no header:

Authorization: Bearer <token>

📡 Endpoints Principais

MétodoEndpointDescrição
POST/api/auth/registerRegistrar novo usuário
POST/api/auth/loginLogin e geração de token JWT
POST/api/empresasCadastrar empresa
GET/api/empresasListar empresas do usuário
POST/api/produtosCriar produto (admin/superadmin)
PUT/api/produtos/:idEditar produto
DELETE/api/usuarios/:id?cascade=trueExcluir usuário e seus dados

🧪 Testes com Jest

  • Todos: npm test
  • Unitários: npm run test:unit
  • Integração: npm run test:integration
  • Coverage: npm run test:cov

🗂️ Estrutura de Pastas

src/
├── config/        # Configuração, seed e env
├── controllers/   # Controllers das rotas
├── middlewares/   # JWT auth e authorization
├── models/        # Schemas Mongoose
├── routes/        # Arquivos de rotas
├── services/      # Regras de negócio
└── server.js      # Inicialização do app

🚀 Deploy no Railway

O projeto está publicado via Docker no Railway.

Variáveis de ambiente configuradas no painel:

  • MONGO_URI
  • JWT_SECRET
  • FRONTEND_URL

Observação: Railway automaticamente detecta e sobe com start do package.json.


👨‍💻 Autor

Desenvolvido por Douglas Souza 🚀