Ce projet est un exercice technique visant à créer une API REST en JavaScript capable de scraper des livres depuis le site https://books.toscrape.com, de les stocker dans une base PostgreSQL, et de les exposer via une API REST.
- Développer un scraper de données depuis un site HTML.
- Stocker les données dans une base PostgreSQL.
- Exposer les données via une API RESTful.
- Permettre la recherche et le filtrage de ces données.
- Le projet doit ĂŞtre lancable avec Docker Compose.
- Utilise JavaScript (Node.js).
- Tu es libre de choisir ton framework web (Express, Fastify, ou aucun).
- Utilise un minimum de dépendances (axios/undici, cheerio, pg ou un ORM léger si besoin).
- Tu es libre de structurer ton projet comme tu veux.
- L'API doit respecter les principes REST.
- Tu peux recevoir une ou plusieurs URLs Ă scraper.
- Fournis un README clair pour expliquer comment lancer le projet.
- Une route qui permet de déclencher un scraping à partir d’une ou plusieurs URLs du site books.toscrape.com.
- Une route REST pour récupérer les données stockées, avec la possibilité de les filtrer (filtres à ta discrétion).
- Le tout doit être persisté en base PostgreSQL.
- Le projet doit ĂŞtre fonctionnel via
docker-compose up --build, sans configuration manuelle.
- Gestion de la pagination sur plusieurs pages.
- Éviter les doublons lors du scraping.
- Ajout de tests unitaires ou d’intégration.
- Ajout d’une documentation de l’API (Swagger, Postman ou simple fichier
.md).
Prévois environ 2 à 3h. Il n’est pas attendu que tout soit parfait ou complet, mais on attend une solution fonctionnelle, propre et lisible.
- Le projet doit ĂŞtre autonome, avec un
docker-compose.ymlopérationnel. - L'API doit fonctionner en local sans étape manuelle.
- Ajoute un README clair avec les instructions pour tester.
- Forke ce repository sur ton compte GitHub personnel.
- Crée une branche nommée
feat/scraper-apiĂ partir demain. - Pousse ton code dans cette branche.
- Crée une Pull Request vers ce repo une fois terminé.
🧠Bonne chance ! Le but est de voir ta logique, ta capacité à organiser ton code et à rendre une API propre. Pas besoin de viser la perfection : l’essentiel c’est que ce soit clair, solide, et que ça tourne.