Este projeto é uma loja virtual de quadrinhos, desenvolvida para um desafio técnico. A aplicação consome a API do Comic Vine para exibir uma lista de quadrinhos, permitindo ao usuário explorar os itens e adicioná-los a um carrinho de compras. A aplicação foi desenvolvida com foco em uma experiência de usuário fluida e responsiva, garantindo que o layout se adapte a diferentes tamanhos de tela (desktop, tablet e mobile) utilizando uma abordagem "mobile-first".
O projeto utiliza uma série de bibliotecas e ferramentas para construir a aplicação. Abaixo estão as principais tecnologias e os comandos de instalação:
-
Front-end: React, JavaScript, HTML5 e CSS3.
-
Gerenciamento de Estado: Redux Toolkit para gerenciar o estado global da aplicação.
npm install @reduxjs/toolkit react-redux -
Estilização: Styled Components para estilização e adaptação de componentes.
npm install styled-components -
Requisições HTTP: O projeto utiliza o fetch API nativo do navegador para fazer as requisições à API do Comic Vine.
-
Ícones: As bibliotecas React Icons e Font Awesome para adicionar ícones à interface.
npm install react-icons npm install @fortawesome/fontawesome-svg-core @fortawesome/free-solid-svg-icons @fortawesome/react-fontawesome @fortawesome/free-regular-svg-icons @fortawesome/free-brands-svg-icons -
API: A aplicação utiliza a API do Comic Vine. Para facilitar as requisições, foi adicionado um proxy no arquivo package.json:
"proxy": "https://comicvine.gamespot.com", -
Conteinerização: Docker e NGINX para empacotar a aplicação e garantir que ela rode de forma consistente em qualquer ambiente.
-
Testes: Cypress para testes de ponta a ponta (E2E), validando o fluxo do usuário em diferentes viewports.
npm install cypress --save-dev
- Fontes: - Nuckle Semi-bold - Cabinet Grotesk Exta-bold
- Estrutura de Estilização: A abordagem "mobile-first" foi utilizada, com media queries implementadas no
index.csspara adaptar o layout em telas maiores (tablets e desktops). OHeaderé um exemplo de componente estilizado com Styled Components e totalmente responsivo.
Para rodar a aplicação em modo de desenvolvimento na sua máquina, siga os passos abaixo:
- Clone o repositório.
- Instale as dependências do projeto:
npm install - Inicie o servidor de desenvolvimento:
npm startA aplicação estará disponível emhttp://localhost:3000.
A aplicação foi conteinerizada para garantir a portabilidade. Certifique-se de ter o Docker instalado e rodando.
-
Na raiz do projeto (onde está o
Dockerfile), construa a imagem Docker:docker build -t comics-store . -
Após a imagem ser construída, execute o contêiner:
docker run -p 8080:80 -d comics-store
A aplicação estará disponível em http://localhost:8080.
Como parte do desafio, foram criados os seguintes cupons de desconto para serem implementados na aplicação. Estes códigos podem ser utilizados pelos clientes durante o checkout.
Código do Cupom Desconto
NORMAL10 10% de desconto
RARE20 20% de desconto
Nota: A lógica para a aplicação desses cupons deve ser implementada no código front-end, validando o código inserido pelo usuário e aplicando o desconto correspondente ao carrinho de compras.
O projeto inclui uma suíte de testes de ponta a ponta para validar o fluxo do usuário em desktop, tablet e mobile.
-
Inicie o servidor de desenvolvimento da aplicação (veja "Como Rodar a Aplicação Localmente" acima).
-
Abra a interface do Cypress para rodar os testes de forma interativa:
npx cypress open -
Alternativamente, para rodar os testes em modo "headless" (sem interface gráfica), execute:
npx cypress run
O Cypress irá executar os testes e gerar um relatório no terminal.
Este projeto demonstra a capacidade de construir uma aplicação React completa, com testes de integração e conteinerização. Todos os requisitos do desafio foram atendidos com sucesso, garantindo uma aplicação robusta, responsiva e pronta para ser implantada.