Controle de gerenciamento de pedidos
- Montagem do pedido pelo app.
- Gerenciamento dos produtos
- Busca de produtos
- Listagem de produtos
- Checkout para pagamento
- Gerenciamento do estoque.
- Identificacao por CPF do cliente
- Aviso de alteracao de status do pedido e monitoramento em tela.
- Exibicao do tempo de espera.
- Gerenciamento de Clientes
- Gerenciamento de Categorias
- Busca de categorias
- Cliente: Toda pessoa que inicia o processo de abertura de um pedido no sistema.
- Atendente: Todo pessoa que trabalha na empresa, seja no caixa, cozinha ou atendimento ao cliente.
- Administrador: Todo pessoa que trabalha na empresa, e que tenha permissao para gerenciar os produtos, categorias e pedidos na area administrativa do sistema.
- Produto: Todo o item comercializado pela empresa
- Categoria: Sao categorias que podem ser vinculadas aos produtos.
- Pedido: Seria o agrupamento de produtos selecionados pelos clientes, com quantidade, totais e forma de pagamento.
- Pagamento: Processo de pagamento de um pedido pelo cliente.
Documentacao das rotas disponiveis, elas podem ser acessadas tambem nessa collection (https://documenter.getpostman.com/view/483864/2s93zFWK1f)
- Path
/cliente
- POST: Cria um novo cliente
- HTTP Code:
- 200 - cadastrado corretamente
- 403 - payload com dados invalidos
- HTTP Code:
- Payload
- POST: Cria um novo cliente
{
"cpf": "80845052209",
"nome": "Lukete",
"email": "email@example.com",
"telefone": "+553199345783"
}
- Resposta
{
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"cpf": "80845052209",
"nome": "Lukete",
"email": "email@example.com",
"telefone": "+553199345783"
}
Path /cliente/{cpf}
- GET: Busca cliente pelo cpf
- HTTP Code:
- 200 - encontrou cliente
- 404 - cliente nao existe
- Resposta
{
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"cpf": "80845052209",
"nome": "Lukete",
"email": "email@example.com",
"telefone": "+553199345783"
}
- Path
/produto
- POST: Cria um novo produto
- HTTP Code:
- 200 - cadastrado corretamente
- 403 - payload com dados invalidos
- Payload
{
"nome": "Produto x",
"descricao": "Descricao y",
"id_categoria": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"preco": 99.89,
"imagens": "https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500"
}
- Resposta
{
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"nome": "Produto x",
"descricao": "Descricao y",
"id_categoria": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"preco": 99.89,
"imagens": "https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500"
}
Path /produto/categoria/{id_categoria}
- GET: Busca produto pela categoria
- HTTP Code:
- 200 - encontrou produto
- 404 - produto nao existe
- Resposta
[{
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"nome": "Produto x",
"descricao": "Descricao y",
"id_categoria": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"preco": 399.34,
"imagens": "https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500"
}]
Path /produto/{id}
- PATH: Edita um produto
- HTTP Code:
- 200 - encontrou produto
- 404 - produto nao existe
- Resposta
{
"nome": "Produto x editado",
"descricao": "Descricao y editada",
"id_categoria": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"preco": 399.34,
"imagens": "https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500"
}
Path /produto/{id}
- DELETE: Deleta um produto
- HTTP Code:
- 200 - deletou o produto com sucesso
- 404 - produto nao existe
- Resposta
{
"success": true
}
- Path
/pedido
- POST: Cria um novo pedido
- HTTP Code:
- 200 - cadastrado corretamente
- 403 - payload com dados invalidos
- Possiveis status:
- C = criado
- F = finalizado
- P = preparado
- E = entregue
- N = cancelado
- Payload
{
"status": "C",
"id_cliente": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"pedido_items": [
{
"quantidade": 1,
"id_produto": "5a68ef06-1b8c-11ee-8fe5-023afac12b88"
},
{
"quantidade": 4,
"id_produto": "5a68ef06-1b8c-11ee-8fe5-023afac12b88"
}
]
}
- Resposta
{
"id": 1,
"data_criacao": "2023-31-03 14:22:10",
"id_cliente": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"status": "C"
}
Path /pedido
- GET: Busca todos os pedidos
- HTTP Code:
- 200 - sucesso
- Resposta
[
{
"id": 1,
"data_criacao": "2023-31-03 14:22:10",
"clientes": {
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"cpf": "80845052209",
"nome": "Lukete",
"email": "email@example.com",
"telefone": "+553199345783"
},
"status": "C",
"pedido_items": [
{
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"quantidade": 1,
"produto": {
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"nome": "Produto x",
"descricao": "Descricao y",
"id_categoria": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"preco": 399.34,
"imagens": "https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500"
}
}
]
},
{
"id": 2,
"data_criacao": "2023-31-03 15:44:30",
"status": "P",
"clientes": {
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"cpf": "80845052209",
"nome": "Lukete",
"email": "email@example.com",
"telefone": "+553199345783"
},
"pedido_items": [
{
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"quantidade": 4,
"produto": {
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"nome": "Produto x",
"descricao": "Descricao y",
"id_categoria": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"preco": 399.34,
"imagens": "https://random.imagecdn.app/500/500, https://random.imagecdn.app/500/500"
}
}
]
},
]
Path /categoria
- GET: Lista todas as categorias
- HTTP Code:
- 200 - sucesso
- Resposta
[
{
"id": "5a68ef06-1b8c-11ee-8fe5-023afac12b88",
"nome": "Categoria 1"
},
{
"id": "5a68ef06-1b8c-12ee-8fe5-023afac12b88",
"nome": "Categoria 2"
}
]
npm i
- Local com docker
npm start
- Local sem docker
npm run dev
Sistema utiliza container docker pronto com o build realizado.
- Para subir no kubernetes basta rodar o comando
npm run deploy && npm run k8s