O Amazon Scraper de Produtos é uma aplicação full stack em Node.js para consultar, tratar e exibir produtos da Amazon Brasil. A solução combina scraping estruturado, API REST e uma interface web responsiva para pesquisar e comparar produtos.
O projeto demonstra consumo e processamento de HTML, normalização de dados, desenvolvimento de APIs REST, cache, rate limit, headers de segurança, tratamento de erros e construção de interface com HTML, CSS, JavaScript, Vite e Tailwind CSS.
O projeto depende da estrutura HTML de um serviço externo. Alterações realizadas pela Amazon podem exigir ajustes no processo de scraping.
Frontend (Vite + Tailwind CSS)
|
API REST (Node.js + Express)
|
Axios
|
JSDOM
|
Processamento e normalização dos dados
|
Resposta JSON
O frontend consome a API e apresenta os produtos em uma grade responsiva. No backend, o Axios realiza as requisições HTTP, o JSDOM interpreta o HTML e os dados coletados são normalizados antes do retorno em JSON.
- Coleta automatizada de produtos da Amazon Brasil;
- pesquisa por palavra-chave;
- parsing do HTML com JSDOM;
- normalização de título, preço, avaliação, reviews, imagem e URL;
- disponibilização dos resultados por API REST em JSON;
- cache em memória com TTL.
- Layout responsivo para desktop e mobile;
- busca com feedback de carregamento;
- filtros locais por preço mínimo, preço máximo e avaliação mínima;
- contador consistente após filtros;
- scroll progressivo para renderização dos cards;
- modo claro/escuro com persistência;
- retry manual para repetir a última busca tentada;
- tratamento amigável de erros HTTP e falhas externas;
- status discreto da API com
API onlineouAPI indisponível; - footer com ano dinâmico.
- Endpoint de health check;
- endpoint de métricas mantido no backend;
- rate limit para mitigar abuso;
- headers de segurança com Helmet;
- compressão das respostas;
- registro de requisições;
- validação dos parâmetros de entrada;
- tratamento centralizado de erros.
GET /api
GET /api/health
GET /api/metrics
GET /api/scrape?keyword=produtoO parâmetro keyword define o termo utilizado na pesquisa dos produtos.
- Node.js;
- Express;
- Axios;
- JSDOM;
- Helmet;
- Morgan;
- Compression;
- Express Rate Limit.
- Vite;
- Tailwind CSS;
- JavaScript;
- Vitest;
- JSDOM.
- Git;
- Node.js
^20.19.0 || >=22.12.0; - npm.
git clone https://github.com/NatanLuz/amazon_scraper_fullstackAPI.git
cd amazon_scraper_fullstackAPINa raiz, instale as dependências do backend e do frontend de forma reproduzível com os lockfiles:
npm run install-allPara instalar separadamente, use npm run install-server e npm run install-client.
Em um terminal, inicie o backend:
npm run devEm outro terminal, inicie o frontend:
cd client
npm run devA interface ficará disponível em:
http://localhost:5173
A API ficará disponível em:
http://localhost:3000
Para compilar o frontend e servi-lo pelo backend:
npm run build
npm startDepois do build, a aplicação fica disponível em http://localhost:3000.
npm run build:prod reutiliza o build sem instalar dependências. npm run deploy compila e inicia localmente; não publica em uma plataforma externa.
Execute os testes do backend:
npm run test:backendExecute os testes do frontend:
cd client
npm test -- --runEstado atual validado:
- backend: 9 testes;
- frontend: 14 testes;
- total: 23/23;
- build do client: OK;
- build pela raiz: OK.
Após iniciar backend e frontend:
- Realize uma busca por palavra-chave;
- verifique cards, imagens, preços, avaliações, reviews e links;
- aplique filtros de preço e avaliação;
- confirme o contador de resultados;
- teste o retry manual após uma falha simulada ou real;
- confirme o status
API onlineouAPI indisponível.
amazon_scraper_fullstackAPI/
├── server/
├── client/
├── docs/
│ └── images/
├── package.json
├── README.md
└── ...
server/: API REST, scraping, cache, métricas e middlewares;client/: interface web desenvolvida com Vite, Tailwind CSS e JavaScript;client/src/__tests__/: testes automatizados executados com Vitest;docs/images/: screenshots locais usadas na documentação;package.json: dependências e scripts do projeto;README.md: documentação técnica principal.
Natan Da Luz
- LinkedIn: linkedin.com/in/natandaluz
- Portfólio: portfolionatan.vercel.app
- E-mail: natandaluz01@gmail.com
Este projeto está sem uma licença definida no momento.

