Projeto de delivery que permite aos usuários fazerem pedidos em restaurantes.
Escolhi o Zustand em vez do Context API ou Redux porque:
- É bem mais simples de configurar
- Não precisa escrever tanto código
- Permite salvar dados no localStorage com facilidade, como o carrinho de compras
- É fácil de entender e usar, mesmo para quem não conhece Redux
🔹 Com Zustand, consigo manter os dados do usuário mesmo que ele atualize ou feche a página, usando
localStorage.
Usei Tailwind CSS no lugar do Material UI porque:
- É mais rápido de usar durante o desenvolvimento
- Dá mais controle sobre o layout e os estilos
- Evita a criação de vários arquivos de CSS
- As classes prontas ajudam a montar o visual da página direto no HTML
- A taxa de entrega é incluída no valor total do pedido
- Se o pedido atingir o valor mínimo para frete grátis, o valor da taxa é automaticamente removido do cálculo
- Bloqueia o pedido se o valor mínimo do restaurante não for atingido
- Mostra ao usuário um aviso sobre o valor mínimo do estabelecimento
- Atualização em tempo real
- Impede acesso a produtos de restaurantes fechados
- Redireciona automaticamente para a página correta
- Mostra se o restaurante está aberto ou fechado com base no horário do servidor
- O estado do carrinho e outras informações são salvos no navegador com
localStorage - O usuário não perde os dados ao atualizar a página ou fechar o navegador
# Instalar dependências
npm install
# Iniciar o projeto
npm run devSugestão de produto para testar: https://aiqfome-maicon.netlify.app/estabelecimento/matsuri/produto/niguiri-item-2 Esse produto está com dados mockados mais completos, ideal para visualizar melhor as funcionalidades.
Cálculo ao adicionar mais de 1 item do mesmo produto:
O valor total do produto é calculado da seguinte forma:
(basePrice * quantidade) + extras + bebidas + utensílios
Ou seja, os adicionais (como extras, bebidas e utensílios) não são multiplicados pela quantidade, apenas o preço base do item.