ericrodriguesfer /
wa-project-challenge
Repositório destinado ao armazenamento do código/projeto implementado como proposta de solução ao desafio de seleção de uma vaga de Desenvolvedor Back-end na Wa Project.
34/100 healthLoading repository data…
deivcode / repository
Solução do desafio para Trainee: Web Scraper automatizado construído com TypeScript, Docker Multi-stage e esteira CI/CD completa. 🚀
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Este repositório contém a solução do desafio técnico para a vaga de Trainee na trilha de Crawler/RPA + IA. O objetivo é realizar a extração de dados estruturados do site books.toscrape.com, contendo um pipeline completo de CI/CD.
git clone https://github.com/deivcode/desafio-trainee-crawler.git
cd desafio-trainee-crawler
npm install
npm start
Os arquivos data.json e data.csv aparecerão na raiz do projeto contendo os dados extraídos.
Para rodar sem se preocupar com as dependências do Node instaladas na máquina:
docker-compose up --build
O volume mapeado no docker-compose.yml garantirá que os arquivos extraídos (data.json e data.csv) sejam salvos diretamente na sua pasta local do Windows.
O script realiza o scraping da página inicial e salva duas versões do resultado.
Schema do JSON (data.json)
[
{
"titulo": "A Light in the Attic",
"preco": 51.77,
"emEstoque": true,
"avaliacao": 3,
"dataColeta": "21/05/2026, 15:00:00"
}
]
titulo (string): Título completo do livro.preco (number): Valor decimal limpo (sem o símbolo £).emEstoque (boolean): true se estiver "In stock".avaliacao (number): Número inteiro representando as estrelas da review (1 a 5).dataColeta (string): Timestamp em formato local de quando a raspagem ocorreu.Schema do CSV (data.csv)
Título;Preço;EmEstoque;Avaliação;DataColeta
"A Light in the Attic";51.77;true;3;"21/05/2026, 15:00:00"
O arquivo .gitlab-ci.yml foi desenhado com foco em segurança, cache e deploy seletivo, rodando em 4 etapas (stages):
ESLint para garantir que as regras de formatação do TypeScript e as boas práticas não foram violadas. Se falhar, o pipeline é abortado.Vitest. Garante que não haja quebras no código antes de passar para a esteira de construção.docker-in-docker (dind) para realizar a construção (build) do nosso Dockerfile e faz o push para o Container Registry do GitLab, fazendo a autenticação via variáveis mascaradas padrão ($CI_REGISTRY_USER, etc).echo) os comandos de update-service na AWS ECS. Regra crítica: este stage foi configurado (rules) para rodar apenas se o commit ocorrer na branch main.Nota: Um sistema de cache foi configurado para a pasta .npm no pipeline, economizando tempo considerável na instalação de dependências entre os jobs.
tsx para executar nativamente sem precisar de complexos passos de transpilação (tsc) no desenvolvimento. Isso garante checagem estática de tipos, evitando bugs bobos durante o scraping.axios para o client HTTP e cheerio para fazer o parseamento do HTML. Sendo um site estático (sem renderização via JS), bibliotecas pesadas como Puppeteer ou Playwright seriam um "overengineering" que apenas atrasaria o pipeline e consumiria mais RAM no CI/CD.type: "module") e TypeScript sem necessidade de nenhuma configuração (Zero Config).builder e outro runner, baseados no node:20-alpine. Isso descarta sujeiras de instalação, produz uma imagem final muito mais leve e garante a execução como um usuário node sem privilégios root.Encarei o uso de IAs generativas como um parceiro de Pair Programming. Eu me responsabilizei inteiramente pela construção das ideias e pela lógica principal de extração de dados do scraper (mapear os seletores e estruturar as interfaces).
Enquanto isso, utilizei a IA de forma iterativa para atuar como meu "copiloto" nas tarefas infraestruturais repetitivas:
docker-compose.yml, sugerindo um volume anônimo para proteger a pasta node_modules do container Linux de sofrer sobrescrita com os binários do Windows local.O que não funcionou de primeira:
Quando tentei pedir para a IA gerar o código completo da raspagem de uma vez só, o código falhava, pois a IA não tinha o contexto exato do HTML do site. Tive que recuar e mapear os seletores (article.product_pod, .price_color) manualmente pelo DevTools do navegador.
Exemplos de Prompts utilizados:
Essa abordagem me permitiu focar no negócio de web scraping sem esbarrar por horas em problemas pontuais de configuração e ambiente, demonstrando como ferramentas de IA auxiliam na produtividade.
Selected from shared topics, language and repository description—not editorial ratings.
ericrodriguesfer /
Repositório destinado ao armazenamento do código/projeto implementado como proposta de solução ao desafio de seleção de uma vaga de Desenvolvedor Back-end na Wa Project.
34/100 healthDiego-Lopes /
Desafio Do While, criando um LP com uma solução educacional, com tecnologia atual.
34/100 healthgbmouraa /
Minha solução para o desafio Interactive comments section do Frontend Mentor
pedropfsf /
Minha solução do desafio "crowdfunding-product-page-main" da plataforma front-end-mentor
43/100 healthgabrielalmir /
Este projeto é uma solução para o desafio técnico de backend do PicPay. A aplicação simula uma plataforma de pagamentos onde usuários podem realizar transferências entre si. O projeto é desenvolvido utilizando Node.js com o framework NestJS, Prisma como ORM, e Redis para mensageria.
48/100 healthwbarbieri /
Solução do Desafio TypeScript
27/100 health