Este projeto é uma solução para o desafio técnico proposto pela QikServe, com o objetivo de criar uma aplicação de visualização de cardápio e gerenciamento de pedidos para um restaurante fictício.
O foco do desafio era simular uma experiência de pedidos online realista e personalizável — adaptável a diferentes restaurantes a partir de uma API pública.
Durante o desenvolvimento, fui além do escopo inicial para entregar uma experiência mais fluida, modular e responsiva. Aproveitei ferramentas como React (Next.js), Zustand, Tailwind CSS e uma API dinâmica para construir uma interface baseada em dados, com personalização visual, navegação mobile-friendly e gerenciamento de estado leve.
Foi uma ótima oportunidade para aplicar boas práticas de arquitetura frontend e reforçar meu domínio sobre temas como componentes reativos, design baseado em dados e performance em aplicações modernas.
Acesse o projeto em: https://restaurant-menu-challenge.vercel.app/
Stack | Descrição |
---|---|
Next.js | Framework React usado para SSR e estrutura de pastas |
React 19 | Biblioteca base para componentes da UI |
Zustand | Gerenciamento de estado simples e eficiente (carrinho e dados de restaurante/menu) |
TypeScript | Tipagem estática para maior robustez e autocompletar |
Tailwind CSS | Estilização rápida e responsiva |
React Modal | Componente de modal acessível para detalhes e carrinho |
Bootstrap Icons | Ícones utilizados na UI |
ESLint | Linter para manter código limpo e padronizado |
Durante esse projeto, aprofundei meu conhecimento em:
git clone https://github.com/seu-usuario/frontend-qikserve-challenge.git
npm install
npm run dev
A documentação completa do projeto foi gerada com TypeDoc e está disponível em:
🔗 Documentação Técnica (GitHub Pages)
Ela inclui descrições de tipos, estruturas, funções e lógica central do projeto — útil para entendimento rápido da base de código.
Restaurante (configurações do tema, nome, etc): https://cdn-dev.preoday.com/challenge/venue/9
Cardápio completo: https://cdn-dev.preoday.com/challenge/menu
A UI se adapta automaticamente com base nas propriedades retornadas pela API:
Propriedade | Utilização |
---|---|
venue.webSettings.bannerImage | Banner superior |
venue.webSettings.navBackgroundColour | Cor do header |
venue.webSettings.primaryColour | Cor dos botões |
Contribuições são bem-vindas! Se você tiver sugestões ou melhorias, sinta-se à vontade para abrir uma issue ou enviar um pull request.
Este projeto é apenas para fins de avaliação técnica.
Caso queira entrar em contato, me encontre em:
Desenvolvido por Vitor Oliveira.