Plataforma de delivery online que conecta clientes a estabelecimentos locais, oferecendo gestão completa de pedidos, cardápios e entregas.
- Visão Geral
- Pré-requisitos
- Instalação
- Configuração
- Estrutura do Projeto
- Documentação da API
- Modelos de Dados
- Autenticação
- Uploads de Arquivos
- Tratamento de Erros
- Testes
- Deploy
- Contribuição
- Licença
Sistema back-end para plataforma de delivery com:
- Gestão de estabelecimentos e produtos
- Fluxo completo de pedidos
- Autenticação JWT
- Upload de imagens
- Endereços múltiplos
Funcionalidades Principais:
- 🛍️ Criação de pedidos com múltiplos produtos
- 📦 Rastreamento de status de pedidos
- 📷 Upload de imagens para produtos e estabelecimentos
- 🔐 Autenticação segura com JWT
- Node.js 18.x+
- npm v8+
- Mongodb 6.x+ (local ou Atlas)
- Git
# Clone o repositório
git clone https://github.com/Dienay/rangos-backend.git
cd rangos-backend
# Instale as dependências
npm i
# Configure o ambiente (baseado no .env.example)
cp .env.example .envNODE_ENV=development
PORT=3000
MONGO_URI=mongodb://usuario:senha@localhost:27017/rangos
JWT_SECRET=segredo_super_secreto
UPLOAD_DIR=./uploads{
"scripts": {
"dev": "ts-node-dev --watch --respawn --transpile-only --ignore-watch node_modules -r tsconfig-paths/register ./src/app.ts",
"dev:docker": "docker-compose up --build --force-recreate",
"start": "node -r module-alias/register dist/app.js",
"build": "tsc",
"lint": "eslint .",
"lint-fix": "eslint . --fix",
"populate": "ts-node ./src/config/dbPopulate.ts",
"prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write"
}
}src/
├── config/ # Configurações globais
├── controllers/ # Lógica das rotas
├── errors/ # Erros personalizados
├── middlewares/ # Autenticação e validações
├── models/ # Schemas do MongoDB
├── routes/ # Definição de rotas
├── uploads/ # Arquivos enviados
└── app.ts # Ponto de entrada
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /signup | Criação de usuário |
| POST | /login | Autenticação |
| GET | /establishments | Lista estabelecimentos |
| POST | /products | Cria produto |
| GET | /user/:id/orders | Pedidos do usuário |
erDiagram
USUARIO ||--o{ PEDIDO : faz
ESTABELECIMENTO ||--o{ PRODUTO : oferece
PEDIDO ||--o{ ITEM-PEDIDO : contem
- Usuário:
nome, email, senha, tipo - Produto:
nome, preço, estabelecimento - Pedido:
status, produtos, valor total - Endereço:
rua, cidade, estado
Documentação Detalhada dos Models
POST /login
Content-Type: application/json
{
"email": "usuario@exemplo.com",
"password": "senha123"
}Resposta:
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"usuario": {
"id": "507f1f77bcf86cd799439011",
"nome": "João Silva"
}
}POST /uploads/usuarios # Avatar do usuário
POST /uploads/produtos # Imagem do produto
POST /uploads/estabelecimentos # Foto do estabelecimentoEspecificações:
- Formatos permitidos:
image/jpeg, image/png - Tamanho máximo:
8MB - Nome do campo:
file
| Código | Tipo | Exemplo |
|---|---|---|
| 400 | Requisição Inválida | Dados faltando ou formato incorreto |
| 401 | Não Autorizado | Token inválido ou ausente |
| 404 | Não Encontrado | Recurso inexistente |
| 413 | Arquivo Grande | Imagem maior que 8MB |
- Usar MongoDB Atlas para banco de dados
- Configurar variáveis de ambiente adequadas
- Utilizar PM2 para gerenciamento de processos
- Habilitar HTTPS
- Configurar CORS para domínios específicos
- Siga o Guia de Estilo
- Use Conventional Commits
- Mantenha testes atualizados
- Documente novas funcionalidades
Fluxo de Desenvolvimento:
git checkout -b feat/nova-funcionalidade
git commit -m "feat: adiciona endpoint de pedidos"
git push origin feat/nova-funcionalidadeEste projeto está licenciado sob a Licença MIT.
- Referência da API - Documentação detalhada de todos os endpoints
- Modelos de Dados - Esquemas e relações do MongoDB
- Guia de Autenticação - Fluxo completo de JWT e permissões
- Tratamento de Erros - Lista completa de códigos e mensagens
- Contribuição - Padrões de código e diretrizes para contribuidores
Repositório Oficial: github.com/Dienay/rangos-backend Suporte: suporte@rangos.com