Présentation

MongoLingo est une application web de quiz pour apprendre les requêtes MongoDB, développée dans le cadre du cours de base de données NoSQL. Le principe s'inspire de Duolingo : on progresse niveau par niveau, on gagne des XP, et on apprend en pratiquant sur de vraies requêtes exécutées contre une vraie base de données, pas juste en lisant de la théorie.

La base de données tourne autour de la botanique scientifique, avec des espèces, familles, habitats et observations géolocalisées. C'est volontairement un domaine un peu inattendu pour du MongoDB, ce qui rend les requêtes plus intéressantes à construire.

Stack technique

Technologie Rôle
React 18 Frontend, thème visuel terminal MongoDB
Node.js + Express 4 Backend et exécution des requêtes
MongoDB 7 Base de données principale
Docker + Docker Compose Installation et lancement recommandés

Fonctionnalités

Quiz progressif - 60 questions réparties sur 6 niveaux (10 par session, tirées aléatoirement). Chaque niveau se débloque à 80% de réussite sur le précédent. Le XP s'accumule entre les sessions via le localStorage, avec un bonus de vitesse si on répond en moins de 5 ou 10 secondes. Deux modes au choix avant de commencer : QCM classique à 4 options, ou écriture libre où on tape la commande MongoDB exacte à la main avec 3 tentatives et exécution en temps réel pour voir pourquoi la réponse est juste ou fausse.

Les niveaux progressent de find et countDocuments en débutant jusqu'aux pipelines complets avec $merge, transactions et $accumulator en expert.

Explorateur de la base - Un onglet dédié permet de parcourir les 5 collections avec un aperçu de 3 documents par collection, et un bouton pour réinitialiser les données de démo.

Bac à sable - Environnement libre pour taper des requêtes MongoDB directement contre la base, avec historique cliquable, raccourcis prédéfinis et exécution via Ctrl+Enter. Inclut aussi des défis guidés avec validation automatique, et un onglet import pour charger ses propres données JSON ou BSON.

Backup - Export de toute la base en un clic, en JSON global, ZIP par collection, BSON ou ZIP BSON compatible mongorestore.

Base de données botanique

La base mongolingo contient 5 collections. especes regroupe 40 espèces botaniques avec famille, habitat, taille, floraison, toxicité, usages et niveau de rareté. familles couvre 8 familles botaniques comme les Asteraceae ou Orchidaceae. habitats décrit 8 milieux naturels avec température moyenne, pluviométrie et pays associés. observations contient 20 observations géolocalisées dans le monde entier. questions stocke les 60 questions du quiz avec leur commande shell, explication pédagogique et métadonnées.

Les collections sont liées entre elles par des id numériques, ce qui permet de travailler des requêtes avec $lookup dans les niveaux avancés.

Vidéo de démonstration

Lien vidéo ci-dessous

https://canva.link/v22wbn3fd23xdca

Code source

ZIP du projet ci-dessous

RenduFinal_MongoLingo_EMERIAU_Emilien.zip