Six Degrees of Kevin Bacon Jeu web inspiré du concept des six degrés de séparation (variante "Six Degrees of Kevin Bacon"). Le but : relier deux acteurs entre eux en passant par des films qu'ils ont tournés en commun, en un minimum d'étapes. Dépôt : https://git.hugo-pierret.be/Hugyouu/six-degrees App : https://six-degrees.hugo-pierret.be Fonctionnalités Défi quotidien — une paire d'acteurs par jour, commune à tous les joueurs Mode infini — parties en solo avec des paires aléatoires Multijoueur temps réel — lobbys via WebSocket (SignalR) Calendrier — historique des défis quotidiens passés Visualisation graphe — représentation interactive acteur → film → acteur (D3.js) Stack technique Couche Technologie Backend ASP.NET Core 8.0 (C#) Base de données PostgreSQL + Entity Framework Core 8.0 Temps réel SignalR Frontend React 18 + Vite Styles Tailwind CSS + Material Tailwind Graphe react-force-graph-2d (D3.js) API externe TMDB Déploiement Docker + Docker Compose Architecture six-degrees/ ├── backend/ │ ├── SixDegrees.Api/ # Contrôleurs, hubs SignalR, config │ ├── SixDegrees.Domain/ # Logique métier, services, entités │ └── SixDegrees.Infrastructure/ # Accès données, migrations EF Core ├── frontend/ │ └── src/ │ ├── pages/ # Vues (Home, DailyChallenge, Lobby…) │ ├── components/ # Composants réutilisables │ └── hooks/ # Hooks custom (SignalR, username…) ├── docker-compose.yml └── .env.example Algorithme Bidirectional BFS pour trouver le chemin le plus court entre deux acteurs (profondeur max = 6 degrés). Modèle de données Stocké en PostgreSQL via Entity Framework Core : Person { id, name, popularity } — acteurs/célébrités Title { id, name, year, type } — films et séries Relation Person → Title (ACTED_IN) Données importées depuis l'API TMDB. Lancer le projet Prérequis Docker et Docker Compose Clés API TMDB (compte gratuit sur themoviedb.org ) Démarrage rapide cp .env.example .env # Remplir TMDB_API_KEY, TMDB_ACCESS_TOKEN, etc. docker compose up --build Application disponible sur http://localhost (ou APP_PORT ). Variables d'environnement Variable Description TMDB_API_KEY Clé API TMDB (requise) TMDB_ACCESS_TOKEN Token d'accès TMDB (requis) DB_CONNECTION_STRING Chaîne de connexion PostgreSQL APP_PORT Port exposé pour le frontend (défaut : 80 ) Développement local Backend cd backend dotnet restore dotnet run --project SixDegrees.Api/ # API sur http://localhost:8080 # Swagger : http://localhost:8080/swagger Frontend cd frontend npm install npm run dev # Dev server sur http://localhost:5173 CI/CD Workflow Gitea ( .gitea/workflows/deploy.yaml ) déclenché automatiquement sur chaque tag v*.*.* — rebuild et redéploiement via Docker Compose. git tag v1.0.0 git push --tags Notes de conception initiale Lors de la phase de prototype, plusieurs choix ont été évalués : Critère Option retenue Alternatives envisagées BDD graphe PostgreSQL + EF Core Apache AGE (extension PG), Neo4j Backend ASP.NET Core (C#) Node.js / Express Algo chemin Bidirectional BFS BFS simple, Dijkstra Source données TMDB Wikidata, IMDb Scoring (mode challenge) Base : (6 - degrés) × 100 points Bonus temps : +50 pts si trouvé en moins d'1 minute Bonus rareté : +50 pts si le chemin inclut un titre peu populaire