- Descrição
- Tecnologias Utilizadas
- Estrutura de Pastas
- Como Instalar e Rodar o Projeto
- Projeto ao Vivo
- Fluxo de Dados
- Licença
- Autor
Este projeto é uma aplicação React que simula um cardápio digital para um restaurante chamado Aluroni. A aplicação permite aos usuários navegar pelo cardápio, filtrar itens por categoria, realizar buscas por nome de pratos e ordenar os resultados por diferentes critérios como preço, porção e quantidade de pessoas que serve.
O projeto foi desenvolvido com React e TypeScript, utilizando módulos CSS para estilização e implementando boas práticas de desenvolvimento como componentização e hooks.
- Navegação entre páginas utilizando React Router
- Carregamento sob demanda (lazy loading) para melhor performance
- Filtros dinâmicos por categoria de alimentos
- Buscador de pratos por texto
- Ordenação de itens por diferentes critérios
- Interface responsiva e amigável ao usuário
- Estilização modular com SCSS
- React: Biblioteca JavaScript para construção de interfaces de usuário
- TypeScript: Superset de JavaScript que adiciona tipagem estática
- SCSS Modules: Para estilização modular e isolada dos componentes
- React Router DOM: Para gerenciamento de rotas e navegação
- React Lazy e Suspense: Para carregamento sob demanda de componentes
- ESLint: Ferramenta para identificar e corrigir problemas no código
- Vite: Ferramenta de build moderna para desenvolvimento rápido
cardapio-aluroni/
├── public/
│ ├── assets/
│ └── index.html
├── src/
│ ├── assets/
│ │ └── logo.svg
│ ├── components/
│ ├── pages/
│ │ ├── Cardapio/
│ │ │ ├── Buscador/
│ │ │ ├── Filtros/
│ │ │ ├── Itens/
│ │ │ │ └── Item/
│ │ │ └── Ordenador/
│ │ └── Inicio/
│ ├── styles/
│ │ ├── _breakpoints.scss
│ │ └── _variaveis.scss
│ ├── index.tsx
│ └── routes.tsx
├── .eslintrc.json
├── package.json
├── README.md
├── LICENSE
├── tsconfig.json
└── vite.config.ts
src/routes.tsx
: Gerencia as rotas da aplicação usando React Router e implementa lazy loading para carregamento sob demanda dos componentessrc/pages/Cardapio/index.tsx
: Componente principal da página de cardápiosrc/pages/Cardapio/Itens/index.tsx
: Gerencia a lógica de filtragem e ordenação dos itenssrc/styles/_variaveis.scss
esrc/styles/_breakpoints.scss
: Arquivos SCSS com variáveis globaisvite.config.ts
: Configuração do Vite para build e desenvolvimento.eslintrc.json
: Configuração do ESLint para linting do código
Pré-requisitos:
- Node.js (versão 14.0 ou superior)
- npm (versão 6.0 ou superior)
- Faça o clone deste repositório em sua máquina local:
git clone https://github.com/seu-usuario/cardapio-aluroni.git
- Acesse o diretório do projeto:
cd cardapio-aluroni
- Instale as dependências do projeto:
npm install
- Inicie o servidor de desenvolvimento:
npm run dev
- Acesse a aplicação em seu navegador no endereço gerado pelo terminal, geralmente http://localhost:5173
O projeto utiliza Vite como ferramenta de build, que já vem configurado para trabalhar com React, TypeScript e SCSS. Para modificar as configurações, você pode editar o arquivo vite.config.ts
.
Para os estilos globais, as variáveis estão definidas nos arquivos _variaveis.scss
e _breakpoints.scss
dentro da pasta src/styles
.
-
Navegando pelo cardápio:
- Acesse a página inicial e clique em "Ver Cardápio"
- Ou navegue diretamente para a rota "/cardapio"
-
Filtrando itens:
- Use os botões de filtro para selecionar uma categoria específica
- Digite no campo de busca para encontrar pratos por nome
- Use o seletor de ordenação para organizar os resultados
Problema Comum: Erros de importação SCSS
- Problema: Mensagens de erro indicando que arquivos SCSS não foram encontrados
- Solução:
- Verifique se o arquivo
vite.config.ts
está configurado corretamente com os aliases para a pasta styles - Certifique-se de que os nomes dos arquivos SCSS correspondem exatamente aos importados
- Reinicie o servidor de desenvolvimento após alterações na configuração
- Verifique se o arquivo
Problema Comum: Tela de carregamento permanece visível
- Problema: A mensagem "Carregando..." não desaparece ao navegar entre páginas
- Solução:
- Verifique se há erros no console do navegador
- Certifique-se de que os componentes importados via lazy loading existem nos caminhos especificados
- Verifique se há erros de sintaxe nos componentes carregados
Você pode ver o projeto ao vivo neste link: https://aluroni-cardapio-online.vercel.app/
A aplicação gerencia o fluxo de dados principalmente através dos componentes da página de Cardápio. Aqui está uma visão geral:
- O estado inicial é definido no componente
Cardapio
para busca, filtros e ordenação - Esses estados são passados como props para os componentes filhos
- O componente
Itens
recebe esses props e aplica a lógica de filtragem e ordenação - Os resultados filtrados são renderizados como componentes
Item
individuais
┌─────────────────────────────────────────────┐
│ Cardapio │
│ ┌─────────────────────────────────────┐ │
│ │ Estado (busca, filtro, ordenador)│ │
│ └─────────────────────────────────────┘ │
│ │ ▲ │
│ │ Props │ Atualizações │
│ │ │ de Estado │
│ ▼ │ │
│ ┌─────────────────────────────────────┐ │
│ │ Componentes (Buscador, Filtros, etc)│ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
O projeto implementa técnicas de otimização de performance:
- Lazy Loading: Todos os componentes principais são carregados sob demanda usando
React.lazy()
eSuspense
, o que melhora o tempo de carregamento inicial da aplicação - Code Splitting: O código é dividido em chunks menores que são carregados apenas quando necessários
- Suspense: Fornece uma experiência de carregamento amigável ao usuário enquanto os componentes são carregados
Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.
- GitHub - Melksedeque Silva
- FrontEndMentor - @Melksedeque
- Twitter / X - @SouzaMelk
- LinkedIn - Melksedeque Silva