Fork du jeu Actorle en se basant sur les données perso de Letterboxd
Find a file
2026-04-11 12:39:35 +02:00
.gitea/issue_template chore: fix report bug issue template 2026-03-30 23:18:14 +02:00
assets fix: reveal grid solutions when abandoning game 2026-04-11 10:58:33 +02:00
bin init 2026-01-13 13:59:05 +01:00
config fix: retry TMDB requests on timeout and 5xx errors 2026-04-05 21:01:29 +02:00
designs update theme 2026-03-30 12:13:19 +02:00
docker fix: use vite-plugin-symfony Stimulus loader and wrap react_component in div 2026-03-28 15:02:27 +01:00
docs/superpowers docs: retry tmdb requests 2026-04-05 23:37:37 +02:00
migrations refactor: track import progress per film instead of per batch 2026-04-01 19:30:15 +02:00
public enhance sync films 2026-01-19 23:22:04 +01:00
src fix: keep synced actors available for award import 2026-04-11 11:55:31 +02:00
templates fix: reveal grid solutions when abandoning game 2026-04-11 10:58:33 +02:00
tests Fix test bootstrap and ActorSyncer test doubles 2026-04-11 12:39:35 +02:00
translations init 2026-01-13 13:59:05 +01:00
.dockerignore various fixes 2026-03-30 20:12:10 +02:00
.editorconfig init 2026-01-13 13:59:05 +01:00
.env.dist various fixes 2026-03-30 20:12:10 +02:00
.env.test feat: add AwardTypeRepository::findWithMinActors() 2026-04-01 22:58:52 +02:00
.gitignore update .gitignore 2026-04-11 11:00:54 +02:00
composer.json feat: install Flysystem S3 and configure SeaweedFS storage 2026-03-29 10:08:56 +02:00
composer.lock feat: install Flysystem S3 and configure SeaweedFS storage 2026-03-29 10:08:56 +02:00
docker-compose.override.yaml fix: resolve messenger worker OOM by clearing EntityManager and disabling debug 2026-03-31 21:34:11 +02:00
docker-compose.yaml update theme 2026-03-30 12:13:19 +02:00
Makefile fix: correct host for gitea registry 2026-04-04 18:06:40 +02:00
package-lock.json feat: replace ? button with hint type icons in ActorPopover 2026-03-30 22:35:39 +02:00
package.json feat: replace ? button with hint type icons in ActorPopover 2026-03-30 22:35:39 +02:00
phpunit.dist.xml init 2026-01-13 13:59:05 +01:00
README.md chore: reorganizing 2026-04-01 19:24:04 +02:00
symfony.lock feat: install Flysystem S3 and configure SeaweedFS storage 2026-03-29 10:08:56 +02:00
vite.config.js fix: use vite-plugin-symfony Stimulus loader and wrap react_component in div 2026-03-28 15:02:27 +01:00

Actorle

Un jeu de devinettes inspiré de Wordle, mais autour des acteurs de cinéma. Le joueur doit deviner le nom d'un acteur lettre par lettre, en s'aidant d'indices liés aux films, personnages et récompenses des acteurs.

Principe du jeu

  1. Le joueur lance une partie. Le système choisit un acteur aléatoire (filtré par popularité TMDB).
  2. Pour chaque lettre du nom de l'acteur, un acteur-indice est attribué, dont le nom commence par cette lettre.
  3. Chaque ligne de la grille propose un indice sur l'acteur-indice : un film dans lequel il a joué, un personnage qu'il a incarné, ou une récompense qu'il a reçue.
  4. Le joueur utilise ces indices pour reconstituer le nom de l'acteur principal.

Les données proviennent de la filmographie Letterboxd de l'utilisateur : seuls les acteurs issus de ses films regardés sont utilisés pour générer les grilles.

Stack technique

Couche Technologies
Backend PHP 8.4, Symfony 8.0, Doctrine ORM, Symfony Messenger
Frontend React 19, Stimulus, Turbo, Vite 6
Base PostgreSQL 16
Stockage FlySystem (S3-compatible)
Serveur FrankenPHP (dev), Caddy (prod)
Infra Docker Compose

Architecture

src/
├── Controller/        # Contrôleurs (Game, Import, Auth)
├── Entity/            # Entités Doctrine (Game, Actor, Movie, Award...)
├── Provider/          # Fournisseurs de données (GameGridProvider)
├── Import/            # Import de données externes (FilmImporter, ActorSyncer, AwardImporter)
├── Repository/        # Requêtes Doctrine
├── Gateway/           # Intégrations externes (TMDB, Wikidata, Letterboxd)
├── Message/           # Messages async (ProcessImport, ImportFilmsBatch)
├── MessageHandler/    # Handlers Symfony Messenger
├── EventListener/     # Abandon auto des parties anonymes au login
├── Form/              # Formulaires (inscription)
└── Model/             # DTOs (TMDB, Letterboxd)

Intégrations externes

  • TMDB API : recherche de films, récupération des castings et crédits
  • Wikidata SPARQL : récupération des récompenses des acteurs (Oscars, BAFTA, etc.)
  • Letterboxd : import de la filmographie via export CSV

Import de films

  1. L'utilisateur exporte son historique depuis Letterboxd (CSV).
  2. Il upload le fichier via l'interface.
  3. Un message async découpe l'import en batchs de 50 films.
  4. Chaque batch recherche les films sur TMDB, synchronise les acteurs et importe leurs récompenses depuis Wikidata.
  5. L'avancement est consultable en temps réel via l'API (GET /api/imports/latest).

Installation

Prérequis

  • Docker et Docker Compose
  • Un token API TMDB

Lancement en développement

# Démarrer les conteneurs (app, messenger, database, node)
make dev:up

# Installer les dépendances npm
make node:install

# Exécuter les migrations
make db:migrate

L'application est accessible sur http://localhost. Le serveur Vite (HMR) tourne sur le port 5173.

Configuration

Les secrets (token TMDB, etc.) se gèrent via Symfony Secrets :

make symfony:secrets-set NAME="TMDB_API_TOKEN"

Variables d'environnement principales :

Variable Description
APP_ENV Environnement (dev / prod)
APP_SECRET Secret Symfony
TMDB_API_TOKEN Token API TMDB (via secrets)
POSTGRES_HOST Hôte PostgreSQL
POSTGRES_USER Utilisateur PostgreSQL
POSTGRES_PASSWORD Mot de passe PostgreSQL
POSTGRES_DB Nom de la base
MESSENGER_TRANSPORT_DSN DSN du transport Messenger

Commandes utiles

make dev:up          # Démarrer le dev
make dev:down        # Arrêter le dev
make dev:logs        # Logs en temps réel
make dev:shell       # Shell dans le conteneur app
make db:migrate      # Exécuter les migrations
make db:migration    # Générer une migration
make db:reset        # Reset complet de la base
make test            # Lancer les tests PHPUnit
make node:build      # Build des assets pour la prod
make help            # Afficher toutes les commandes

Déploiement

# Build et push des images vers le registry
make docker:build
make docker:push

# Sur le serveur de production
make prod:up

Les images sont hébergées sur le registry Gitea git.lclr.dev.

Services Docker

Service Description
app Application FrankenPHP (dev) / Caddy (prod)
messenger Worker Symfony Messenger (consomme la queue async)
database PostgreSQL 16
node Vite dev server avec HMR (dev uniquement)