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.


Fonctionnalités


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 :

Données importées depuis l'API TMDB.


Lancer le projet

Prérequis

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)


Revision #6
Created 8 October 2025 16:08:42 by Hugo
Updated 29 March 2026 14:38:12 by Hugo