🔗 | Clique aqui para ver o projeto em execução
MP Burger é uma hamburgueria desenvolvida em React e um servidor JSON-Server para armazenar pedidos quando houver um no carrinho. Não foi criado nenhum servidor altamente profissional, a intenção era apenas armazenar as requisições em algum lugar, sem que eu me preocupasse em criar um schema e armazená-las dentro de um banco de dados.
A lanchonete fictícia abre às 18h horário de Brasília e fecha às 23h, fora desse período não é possível fazer nenhum pedido, pois o estabelecimento está fechado. Neste projeto foram gerados um CNPJ e um endereço, ambos aleatórios, para a hamburgueria.
Não tenho ideia do preço dos alimentos, todos os valores foram gerados com preço e quantidade que vieram da minha cabeça, as imagens dos lanches, pratos, bebidas e sobremesas foram geradas com inteligência artificial (IA).
Temos diversas categorias de alimentos, incluindo: "Entradas", "Padrões", "Chicken", "Artesanais", "Porções", "Bebidas" e "Sobremesas".
01. Entradas
02. Padrões
03. Chicken
04. Artesanais
05. Porções
06. Bebidas
07. Sobremesas
Observação: ao clicar na categoria do menu de navegação que fica fixo na tela, você será levado para onde aquela categoria começa.
Fazer um pedido é simples, basta clicar no que deseja pedir e aparecerá um modal com algumas opções. Cada item possui seu modal individual, com opções exclusivas apenas para aquele item. Todos os itens permitem que o usuário escreva uma observação se desejar, por exemplo: não há necessidade de fritar muito a cebola.
Alguns itens possuem valores adicionais que são deduzidos do valor final do seu pedido. Os valores que diminuem o valor final estão em vermelho, os que aumentam estão em verde e os que não alteram o valor estão escritos exatamente isso em cinza. O valor total do pedido é atualizado em tempo real e esse é o valor que vai para o seu carrinho ao finalizá-lo.
Cada campo preenchido fica armazenado no local storage, ou seja, mesmo que o usuário recarregue ou feche a página, o pedido que ele fez ao clicar em “Adicionar ao carrinho” (que só está disponível se o estabelecimento estiver aberto) permanece. Ao fazer isso, a página é recarregada e a opção “Carrinho” aparece para o usuário no canto inferior direito da tela, permitindo que o usuário continue fazendo mais pedidos ou não.
No "Carrinho", você terá dois campos: "Revise seu pedido" e "Complete seu pedido".
Quando a checkbox é marcada, apenas o nome, forma de pagamento e pedido são enviados ao servidor. Se não estiver marcada, todos os itens do formulário serão enviados.
Aqui está um exemplo de como os dados chegam no servidor quando a checbox está desmarcada de acordo com o exemplo:
{
"orders": [
{
"id": "90a3",
"name": "Fulano",
"address": "Rua ABC",
"zipCode": "28922-529",
"neighborhood": "Alegre",
"number": "7.880",
"referencePoint": "Próximo a uma farmácia de esquina",
"complement": "house",
"formOfPayment": "money",
"order": [
{
"description": "X Tudo",
"price": 35,
"extras": [
"Peito de peru",
"Ovo",
"Sem gergelim"
]
}
],
"submittedAt": "02/06/2024, 12:30:17"
}
]
}
PS C:\burger echo. > orders.json
{
"orders": []
}
Na sequência, inicialize o servidor JSON com:
PS C:\burger json-server --watch orders.json --port 3001
Observações: caso o arquivo json não seja criado ou o servidor não seja inicializado, um erro irá aparecer na hora de confirmar o pedido.
Inicie o projeto com: ```Shell
PS C:\burger npm run dev
- Após esse processo, você já estará conseguindo utilizar normalmente o projeto.
> **Observação:** a hamburgueria só funciona a partir das 18h e vai até às 23h, caso você queira que ela fique aberta direto para fazer os pedidos, basta mudar o valor da constante **isOpen** que pode ser encontrada em "_src/exported/constants_". Não apague ou comente essa constante.
```JavaScript
// Altere de:
export const isOpen = hours >= openingTime && hours < closingTime
// Para:
export const isOpen = hours