Ce test technique te permettra de décrocher le saint graal des développeurs, le poste de Lead Développeur NodeJS chez Le Hibou !
Ce test vise à vérifier ta capacité à (toujours en Javascript, avec NodeJS):
- Créer des API Rest;
- Gérer des bases de données MySQL;
- Créer des scrappeurs;
- Tester ton code;
Tu vas devoir créer un scrappeur qui soit capable d'effectuer une recherche sur le site "seloger.com", récupérer les résultats de recherche, et les inscrire via une API Rest sur une base de données MySQL. La base de données est déjà configurée et fonctionne.
L'API doit:
- Utiliser Sequelize pour interagir avec la base de données. La connexion est déjà configurée et nous avons créé pour toi un modèle de "Flat" ("appartement" en anglais 🇬🇧) et la migration correspondante. Libre à toi de revoir le modèle si tu veux stocker plus d'informations que celles que nous avons prévues;
- Exposer un CRUD complet permettant d'interagir avec la base de données. Tu es libre de les paramétrer comme bon te semble;
- Inutile de mettre en place une authentification (tu peux le faire si tu le souhaites), ce n'est pas exigé;
Le scrappeur doit:
- Se relancer automatiquement à intervalles réguliers (paramétrables);
- Effectuer sa recherche sur "seloger.com" à partir de variables d'environnement modulables (lieu, budget, surface, etc. sens-toi libre de définir autant de variables que tu le souhaites 😄);
- Il ajoute toute nouvelle annonce dans la base de données;
- Il update les annonces existantes si nécessaire;
- Il supprime les annonces qui n'apparaissent plus dans la recherche;
Ton code devra comporter des tests unitaires. Nous te laissons le choix des tests que tu juges nécessaires d'implémenter, notre philosophie est que le test à outrance est contre productif. Nous utilisons Jest comme framework de test, tu es libre d'en utiliser un autre si tu le souhaites, mais nous t'encourageons à utiliser nos outils 😉.
Nous avons pré-créé un template pour le projet, qui se compose de 3 containers Docker (une base de données MySQL, une API, et un bot). Tu n'es pas obligé de l'utiliser, même si c'est vivement recommandé (il a été créé pour t'éviter de perdre du temps 😉). Aucune compétence en Docker n'est nécessaire pour le poste (même si c'est un plus!), et tu n'as normalement pas besoin d'être un expert en Docker pour utiliser ce template.
La configuration de la base de données se trouve dans "api/db.env".
Après avoir installé docker et docker-compose il suffit de lancer (depuis la racine du projet):
docker-compose -f docker-compose.yml up -d
Si ce test n'est pas suffisant pour nous exposer l'étendu de ton talent, n'hésite pas à ajouter:
- Une interface web (dans un nouveau container bien-sûr 😉)
- Une authentification pour l'API