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 installJWT_SECRET=VENDERGAS
MONGO_URI=mongodb://localhost:27017/desafio-db
FRONTEND_URL=https://localhost:3000
docker-compose up --buildMONGO_URI=mongodb://usuario:senha@host:porta/database?authSource=adminO 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_URIJWT_SECRETFRONTEND_URL
Observação: Railway automaticamente detecta e sobe com start do package.json.
Desenvolvido por Douglas Souza 🚀