Git Product home page Git Product logo

shopper-challenge's Introduction

Shopper-Challenge

Este é um projeto desenvolvido como parte de um desafio técnico para concorrer a uma vaga na empresa Shopper.com.br.

Alt text

Sobre o Projeto

O objetivo deste projeto é desenvolver uma ferramenta que permita aos usuários atualizar os preços dos produtos de suas lojas de forma massiva e com recursos adicionais para evitar erros que possam prejudicar o negócio. A ferramenta deve atender aos seguintes requisitos:

  • O time Compras gera um arquivo CSV contendo o código do produto e o novo preço que será carregado.
  • O time Financeiro solicita que o sistema impeça que o preço de venda dos produtos fique abaixo do custo deles.
  • O time de Marketing solicita que o sistema impeça qualquer reajuste maior ou menor do que 10% do preço atual do produto.
  • Alguns produtos são vendidos em pacotes, e ao reajustar o preço de um pacote, o 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.

Tecnologias Utilizadas

  • Back-End: Node.js com TypeScript
  • Front-End: React.js com TypeScript
  • Banco de Dados: MySQL (versão 8)
  • Docker: Utilizado para criar containers para o back-end, front-end e banco de dados.

Pré-requisitos

Para executar este projeto em sua máquina local, certifique-se de atender ao seguinte requisito:

  • Docker instalado e configurado.

Executando o Projeto

Para iniciar o projeto, siga os passos abaixo:

  1. Clone este repositório:
git clone [email protected]:gleisoncoruja/shopper-chalange.git
  1. Navegue para o diretório do projeto:
cd shopper-chalange
  1. Navegue para o diretório do backend:
cd backend
  1. Renomeie o arquivo .env-copy para .env:

Windows

ren .env-copy .env

Linux

mv .env-copy .env
  1. Navegue de volta para o diretório principal do projeto:
cd ..
  1. Execute o seguinte comando para iniciar o projeto com Docker:
docker-compose up --build

Isso criará os containers necessários e iniciará o projeto.

Aguarde até que todos os containers estejam prontos e o sistema esteja funcionando.

Uso da Ferramenta

Frontend

  1. Acesse a interface do usuário em seu navegador em http://localhost:3000/.

  2. Na página principal, você verá listado todos os produtos.

  3. Ao clicar no botão ATUALIZAR PREÇOS, você navegará até a página de atualização de preços, você poderá fazer o upload do arquivo CSV contendo as atualizações de preço dos produtos.

  4. Clique no botão "VALIDAR" para verificar se o arquivo está formatado corretamente e atende às regras estabelecidas.

  5. Os produtos validados serão exibidos na tela, mostrando o Código, Nome, Preço Atual e Novo Preço. Qualquer regra quebrada será destacada.

  6. Se todos os produtos estiverem corretamente validados, o botão "ATUALIZAR" será habilitado.

  7. Clique no botão "ATUALIZAR" para salvar os novos preços no banco de dados.

Backend

O backend é responsável por processar as requisições do frontend, aplicar as regras de validação e atualizar os preços no banco de dados MySQL.

Banco de Dados

O banco de dados MySQL é usado para armazenar informações sobre produtos e preços. As atualizações de preços serão refletidas no banco de dados.

Autor

Gleison Souza

Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE.md para detalhes.

shopper-challenge's People

Contributors

gleisonlsouza avatar

Stargazers

Felipe Negrão avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.