{"id":15198386,"url":"https://github.com/kleutons/shopper-frontend-v2","last_synced_at":"2026-03-07T00:32:01.822Z","repository":{"id":195831867,"uuid":"693275932","full_name":"kleutons/shopper-frontend-v2","owner":"kleutons","description":"Desafio FullStak para a empresa shopper.com.br, esse é o projeto FrontEnd feito com React.js usando Vite","archived":false,"fork":false,"pushed_at":"2023-09-27T13:26:05.000Z","size":191,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-01T00:51:07.676Z","etag":null,"topics":["eslint","eslint-plugin","react","react-router-dom","styled-components","typescript","vercel","vite"],"latest_commit_sha":null,"homepage":"https://shopper-frontend-v2.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kleutons.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-18T17:44:02.000Z","updated_at":"2023-09-21T17:25:27.000Z","dependencies_parsed_at":"2024-09-18T23:07:43.559Z","dependency_job_id":"12ba0bab-7cf9-4539-8508-ef59e2df934a","html_url":"https://github.com/kleutons/shopper-frontend-v2","commit_stats":{"total_commits":27,"total_committers":1,"mean_commits":27.0,"dds":0.0,"last_synced_commit":"8aa8acfa90328dea4f7fe832a5dabd4e8e77dcce"},"previous_names":["kleutons/shopper-frontend-v2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kleutons/shopper-frontend-v2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleutons%2Fshopper-frontend-v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleutons%2Fshopper-frontend-v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleutons%2Fshopper-frontend-v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleutons%2Fshopper-frontend-v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kleutons","download_url":"https://codeload.github.com/kleutons/shopper-frontend-v2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleutons%2Fshopper-frontend-v2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30204154,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eslint","eslint-plugin","react","react-router-dom","styled-components","typescript","vercel","vite"],"created_at":"2024-09-28T01:04:43.699Z","updated_at":"2026-03-07T00:32:01.802Z","avatar_url":"https://github.com/kleutons.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Desafio FullStak Shopper.com.br (Repositório FrontEnd - VERSÃO 2)\n\nBem-vindo(a). Este é o desafio Front end, para a Shopper.com.br!\nO objetivo deste desafio é um teste técnico para avaliar habilidades em desenvolvimento de software.\n\n## [Projeto Online](https://shopper-frontend-v2.vercel.app)\n\n- https://shopper-frontend-v2.vercel.app\n- Por se tratar de um servidor backend gratuito e internacional, é possível que a primeira exibição da página leve mais tempo do que o habitual, o que não ocorre no ambiente localhost.\n\n### Screenshots\n\n![App Screenshot](.github/prototype.png)\n\n# 🧠 Contexto\n\nO desafio será implementar uma ferramenta, que permita atualizar os produtos de forma massiva usando com isso o envio de um arquivo csv, e com recursos adicionais para evitar erros que possam prejudicar o negócio.\n\n## Resposabilidades \n\u003e **Time Compras:** Responsável por definir os preços e gerar um arquivo CSV, contendo código do produto e o novo preço que será carregado.\n\n\u003e **Time Financeiro:** Controla o faturamento, solicitou que o sistema impeça que o preço de venda dos produtos fique abaixo do custo.\n\n\u003e **Time de Marketing:** Solicita que o sistema impeça qualquer reajuste maior ou menor do que 10%.\n\n## Produtos que são pacotes kits\nEstabeleceu-se a regra que, ao reajustar o preço de um pacote, o mesmo arquivo deve conter os reajustes dos preços dos componentes do pacote de modo que o preço final da soma dos componentes seja igual ao preço do pacote.\n***A ferramenta deve impedir atualizações de preço que quebrem essa regra.***\n\n1. Exemplo 1:\n    - PACK GUARANA 1L – 6 Unidades = R$ 24,00\n    - Preço cada und. Pack: R$ 4,00 * 6 = R$ 24,00\n    - ::::::::::: NOVO PREÇO :::::::::::::::\n    - PACK GUARANA 1L – 6 Unidades = R$ 30,00\n    - Preço cada und. Pack: R$ 5,00 * 6 = R$ 30,00\n\u003cbr\u003e\u003cbr\u003e\n2. Exemplo 2:\n    - ESCOVA DE DENTES 1und R$ 10,00 + PASTA DE DENTE 1und R$ 15,00\n    - TOTAL = R$ 10,00 + R$ 15,00 = R$ 25,00\n    - ::::::::::: NOVO PREÇO :::::::::::::::\n    - ESCOVA DE DENTES 1und R$ 20,00 + PASTA DE DENTE 1und R$ 15,00\n    - TOTAL = R$ 20,00 + R$ 15,00 = R$ 35,00\n\n\n## 📋 REQUISITOS\n\nChegou a hora de colocar a mão na massa!\n- [x] O sistema deve permitir que o usuário carregue o arquivo de precificação\n- [x] O sistema deve ter um botão chamado VALIDAR\n    - [x] Todos os campos necessários existem?\n    - [x] Os códigos de produtos informados existem?\n    - [x] Os preços estão preenchidos e são valores numéricos validos? \n    - [x] Os códigos de produtos informados existem?\n    - [x] Valida: Preço não pode estar abaixo do custo\n    - [x] Valida: Reajuste maior ou menor do que 10%\n    - [x] Nova Regra: Valida Tipo de produto, é unitário, é um kit, ou faz parte de um kit\n    - [x] Valida: Se é um Kit - o csv deve conter os reajustes dos preços dos componentes do pacote.\n        - [x] Valida: verificar se preço final da soma dos componentes seja igual ao preço do pacote.\n- [x] Finalizar Validação: e exibir Código, Nome, Preço Atual, Novo Preço\n- [x] Exibir ao lado de cada produto qual regra foi quebrada\n- [x] Habilitar botão ATUALIZAR, somente se todas as linhas estiverem validadas\n    - [x] Ao clica em ATUALIZAR, o sistema deve salvar o novo preço no banco de dados, com tela pronta para o envio de um novo arquivo. \n    - [x] Nova Regra: Valida Tipo de produto, é unitário, é um kit, ou faz parte de um kit\n    - [x] O preço de custo dos pacotes também deve ser atualizado como a soma dos custos dos seus componentes.  \n\n\n## 👨‍💻 Instalação\n\n### Frontend\n\n1. Clonar este repositório\n```bash\ngit clone https://github.com/kleutons/shopper-frontend-v2\n```\n\n2. Configurar variável de ambiente para apontar a url do servidor backend, arquivo [.env](/.env)\n```\nVITE_REACT_APP_API_URL=http://localhost:3002\n```\n\n3. Instalar dependência \n```bash\nnpm install\n```\n\n4. Executar Front-end\n```bash\nnpm run dev\n```\n\n5. Acessar WebSite FrontEnd na porta 5173\n```\nhttp://localhost:5173/shopper-frontend-v2\n```\n\n### Servidor BackEnd\nSiga os passos descritos no Readme do repositório referente ao servidor backend: \n- https://github.com/kleutons/shopper-backend-v2\n\n## 👨‍💻 Sobre Mim\n### Made with 💙 by [@kleutons](https://github.com/kleutons)\n\n### Contato\n- [LinkedIn](https://www.linkedin.com/in/kleuton-novais/)\n- [Portfólio](https://kleuton.dev)\n\n###\nAguardo seu feedback e sugestões sobre esta solução.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkleutons%2Fshopper-frontend-v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkleutons%2Fshopper-frontend-v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkleutons%2Fshopper-frontend-v2/lists"}