- React.js
- json-server
- Tailwind CSS
- Yarn
Node.js >= 18.3
git clone https://github.com/johnn1sbo3s/RD.git
./install.sh # instala dependências
yarn dev # sobe front e backFrontend: localhost:3000
Backend: localhost:3001
yarn start- inicia a aplicação React em modo de desenvolvimentoyarn dev- sobe frontend e backend simultaneamenteyarn start:frontend- inicia apenas o frontendyarn start:backend- inicia apenas o backend
- O usuário seleciona as preferências, funcionalidades e o tipo de recomendação
- Cada produto recebe um score, que soma quantas preferências selecionadas batem com as do produto e quantas funcionalidades selecionadas batem com as dele
- Produtos com score 0 são descartados
SingleProduct: retorna o produto com maior score, e em caso de empate, retorna o último da lista. MultipleProducts: retorna todos os produtos com score > 0, na ordem original do catálogo. Nenhum match: retorna array vazio.
O score é simples de propósito, onde cada match vale 1 e não usei pesos. Fiz assim pra deixar a lógica transparente e fácil de testar. Caso no futuro precise de pesos diferentes pra preferências vs. funcionalidades, basta ajustar o método getProductScore.
Optei por redesenhar a tela, pra tornar a navegação mais simples e agradável.
Defini três estados visuais para a geração das recomendações:
- Inicial: "Ainda não há uma recomendação"
- Loading: skeleton (800ms com setTimeout pra simular uma chamada de API)
- Resultado vazio: "Nenhum produto encontrado"
cd frontend && yarn testOs testes cobrem os principais casos da lógica de recomendação e da integração do formulário.
Desenvolvido por João Paulo Castro