Six Degrees of Kevin Bacon
Six Degrees — Analyse & Prototype
Ce document rassemble l'analyse, le design, le modèle de données et un prototype minimal (backend + frontend) pour un jeu en ligne entre potes inspiré du principe des Six Degrees of Kevin Bacon.
Source de données
TMDB (The Movie Database) : API gratuite avec clé, excellente couverture, simple à utiliser. ➡️ On extrait un sous-ensemble (personnes + films/séries) et on stocke en local pour éviter les limites de requêtes.
Stockage
Neo4j Community Edition : base graphe native, parfaite pour ce type de problème. ➡️ Pas besoin de surcouche relationnelle, et l’API Cypher est idéale pour trouver des chemins.
Backend
Node.js (Express) : rapide à mettre en place, bonne intégration avec Neo4j via neo4j-driver. ➡️ Endpoints REST simples pour recherche et calcul de chemin.
Frontend
React + Vite : léger, moderne, parfait pour un prototype. ➡️ WebSocket pour mode temps réel (co-op, challenge).
📐 Modèle de données (fixé)
Noeuds
Person {id, name, type, popularity}
Title {id, name, year, type}
Arêtes
ACTED_IN (Person → Title)
CREWED (Person → Title)
⚙️ Algorithmes
Bidirectional BFS pour trouver le chemin le plus court (rapide et efficace).
Cache mémoire (simple Map en Node.js) pour stocker les résultats récents.
Profondeur max = 12 (équivalent à 6 degrés).
🎮 Modes de jeu (retenus)
Classic : trouver le chemin le plus court entre deux célébrités.
Challenge Temps : limite de 2 minutes pour trouver un chemin.
Co-op : 2 à 4 joueurs construisent le chemin ensemble via WebSocket.
🏆 Scoring (fixé)
Base points = (6 - degrees) × 100
Bonus temps : +50 points si trouvé en moins de 1 minute.
Bonus rareté : +50 points si le chemin inclut un titre peu populaire (< seuil TMDB popularity).
🌐 API (fixée)
GET /api/people?q=search → recherche personnes
GET /api/title?q=search → recherche films/séries
POST /api/path → calcule chemin { fromPersonId, toPersonId } ➡️ Retourne : chemin (liste de nodes/edges), longueur, score calculé.
🏗️ Architecture finale
Data ingestion : script Node.js qui appelle TMDB et insère dans Neo4j.
Backend : Express + Neo4j-driver + cache mémoire.
Frontend : React + Vite + WebSocket.
Auth : simple login par pseudo (pas besoin d’OAuth pour usage privé).
Analytics : log en mémoire des chemins joués (top 10 affichés en frontend).
🚀 Prototype minimal (MVP)
Script d’ingestion TMDB → Neo4j.
Backend Express avec 3 endpoints.
Frontend React avec :
Formulaire pour choisir deux personnes
Affichage du chemin (liste ou graphe visuel avec vis.js ou d3.js)
Timer pour mode Challenge Temps
WebSocket pour mode Co-op