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
).
- 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)
git clone https://github.com/ddouglss/vendergas-backend.git
cd vendergas-backend
npm install
JWT_SECRET=VENDERGAS
MONGO_URI=mongodb://localhost:27017/desafio-db
FRONTEND_URL=https://localhost:3000
docker-compose up --build
MONGO_URI=mongodb://usuario:senha@host:porta/database?authSource=admin
O projeto usa JWT para autenticação e middleware de autorização baseado em roles.
user
: acesso básicoadmin
: pode criar, editar e excluir recursos da empresasuperadmin
: acesso total ao sistema
auth // verifica se o token JWT é válido
authorize('admin') // permite apenas admins
authorize('admin', 'superadmin') // múltiplas permissões
Authorization: Bearer <token>
Método | Endpoint | Descrição |
---|---|---|
POST | /api/auth/register | Registrar novo usuário |
POST | /api/auth/login | Login e geração de token JWT |
POST | /api/empresas | Cadastrar empresa |
GET | /api/empresas | Listar empresas do usuário |
POST | /api/produtos | Criar produto (admin/superadmin) |
PUT | /api/produtos/:id | Editar produto |
DELETE | /api/usuarios/:id?cascade=true | Excluir usuário e seus dados |
- Todos:
npm test
- Unitários:
npm run test:unit
- Integração:
npm run test:integration
- Coverage:
npm run test:cov
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
O projeto está publicado via Docker no Railway.
MONGO_URI
JWT_SECRET
FRONTEND_URL
Observação: Railway automaticamente detecta e sobe com start
do package.json
.
Desenvolvido por Douglas Souza 🚀