📩
01
Prérequis
Runtime
Node.js v18 ou supérieur · npm
SystĂšme
AccÚs en écriture pour la DB SQLite · Persistance des données entre redémarrages
Réseau sortant
boardgamegeek.com (API BGG) · api.anthropic.com (IA, optionnel) · Serveur SMTP (email, optionnel)
Hébergement compatible
VPS · Serveur dĂ©diĂ© · Docker ✅ — Vercel/Netlify ❌ (serverless incompatible)
💡 Minimum recommandĂ© : 256 MB RAM. Pas besoin de MySQL, Redis ou autre base externe — GameDay utilise SQLite.
🚀
02
Installation
Avec Docker (recommandé)
1
Copiez le dossier du projet sur votre serveur.
2
Copiez .env.example en .env et remplissez les valeurs (voir Configuration).
3
Lancez : docker compose up -d
4
L'application est accessible sur le port 3000 (ou celui configuré).
Sans Docker
1
Installez les dépendances : npm install
2
Copiez .env.example en .env et configurez.
3
Démarrez : node server.js (ou via PM2 pour la production)
⚙
03
Configuration

Toutes les variables se configurent dans le fichier .env Ă  la racine du projet.

VariableDescriptionRequis
SESSION_SECRETClĂ© secrĂšte pour les sessions — changez cette valeur !✅ Oui
ADMIN_RESET_TOKENToken pour récupérer l'accÚs admin en cas de perte de mot de passeNon
ANTHROPIC_API_KEYClé API Anthropic pour la génération IA du programmeVersion IA
SMTP_HOSTServeur SMTP pour les emails (ex: mail.infomaniak.com)Non
SMTP_PORTPort SMTP (ex: 587)Non
SMTP_USERAdresse email d'envoiNon
SMTP_PASSMot de passe SMTPNon
SMTP_FROMAdresse d'expéditeur affichéeNon
APP_URLURL publique du site (ex: https://monsite.ch)Non
PORTPort du serveur (défaut: 3000)Non
DB_PATHChemin vers la base de données SQLiteNon
✹
04
Configurer l'IA ✹ IA

GameDay utilise l'API Anthropic (Claude) pour deux fonctionnalitĂ©s : la gĂ©nĂ©ration automatique du programme et l'estimation des durĂ©es. Ces fonctionnalitĂ©s sont optionnelles — le site fonctionne entiĂšrement sans.

Fonctions utilisant l'IA
✹ GĂ©nĂ©ration du programme
GénÚre automatiquement un programme de journée optimisé selon les votes, les contraintes de joueurs et les teachers. Utilise Claude Sonnet (mode libre) ou Claude Haiku (mode guidé).
⏱ Estimation des durĂ©es
Estime automatiquement la durée d'un créneau en fonction du jeu, du nombre de joueurs et du teaching. Utilise Claude Haiku pour rester économique.
✹ L'IA gĂ©nĂšre un programme en JSON structurĂ©, puis le serveur vĂ©rifie et corrige automatiquement les violations de rĂšgles (teacher absent de sa table, joueur sur deux tables, etc.) avec jusqu'Ă  2 itĂ©rations de correction.
Obtenir une clé API Anthropic
1
Créez un compte sur console.anthropic.com
2
Dans Settings → API Keys, crĂ©ez une nouvelle clĂ©
3
Ajoutez-la dans votre .env : ANTHROPIC_API_KEY=sk-ant-...
4
RedĂ©marrez l'application — le bouton "GĂ©nĂ©rer avec l'IA" apparaĂźt dans l'onglet Programme
💾 L'usage de l'API Anthropic est payant. Une gĂ©nĂ©ration de programme coĂ»te typiquement moins de 0.01 CHF en mode guidĂ© (Haiku) et ~0.05 CHF en mode libre (Sonnet).
đŸ‘€
05
Créer un compte
1
Obtenez un lien d'invitation auprĂšs d'un administrateur. Ce lien est unique et Ă  usage unique.
2
Renseignez votre pseudo et mot de passe. Optionnellement : votre pseudo BoardGameGeek.
3
Dans votre Profil, synchronisez votre collection BGG pour accéder à vos jeux lors des propositions.
📧 Si le reset par email est activĂ© par l'admin, renseignez votre adresse email dans votre profil pour pouvoir rĂ©initialiser votre mot de passe vous-mĂȘme.
📅
06
Gérer les séances

Depuis l'accueil, cliquez + Créer une nouvelle séance. Renseignez le nom, la date et créez des catégories de jeux. Les admins peuvent créer des séances privées visibles uniquement par les membres invités.

Les cartes de sĂ©ances affichent des bandeaux d'alerte : đŸ”” vote manquant ou incomplet · 🟠 nouveaux jeux proposĂ©s depuis votre dernier vote.

L'admin et le crĂ©ateur de sĂ©ance peuvent retirer un participant en cliquant le × Ă  droite de son nom dans la barre des participants.

🎼
07
Proposer des jeux

Dans l'onglet Proposer : depuis votre collection BGG synchronisĂ©e, ou en ajout manuel via URL BoardGameGeek. Cliquez ✏ pour modifier une proposition, changer le teacher, dĂ©finir la durĂ©e de teaching, ou rafraĂźchir les donnĂ©es BGG avec 🔄.

Le bouton ⭐ Enrichir BGG (admin uniquement) met à jour les notes et weights BGG de tous les jeux proposés dans la séance.

🗳
08
Voter

Classez les jeux par ordre de prĂ©fĂ©rence par catĂ©gorie via glisser-dĂ©poser. Validez avec ✓ Valider mon classement. Les scores Borda sont visibles en temps rĂ©el dans l'onglet RĂ©sultats. L'organisateur peut verrouiller les votes (🔒).

📋
09
Édition manuelle du programme
1
Cliquez + Créneau pour ajouter un créneau.
2
Cliquez ▾ pour Ă©diter — choisissez le jeu depuis les jeux votĂ©s, les collections, ou BGG. Ajoutez des tables B/C pour les crĂ©neaux parallĂšles.
3
Glissez â ż pour rĂ©ordonner — les horaires se recalculent automatiquement depuis l'heure de dĂ©but.
4
Cliquez 📊 Voir les classements individuels pour voir les prĂ©fĂ©rences de chaque joueur pendant l'Ă©dition.
5
Publiez avec ✅ Valider & publier — une page publique est gĂ©nĂ©rĂ©e Ă  /programme/ID.
✹
10
GĂ©nĂ©ration IA ✹ IA
✹ Cette fonctionnalitĂ© nĂ©cessite une clĂ© ANTHROPIC_API_KEY dans la configuration. Elle est absente de la version "sans IA".
Mode guidĂ© — Claude Haiku

Renseignez les horaires, la pause déjeuner, le nombre de tables maximum et le nombre de créneaux tous ensemble vs en parallÚle. L'IA génÚre un programme structuré rapidement et à moindre coût.

Mode libre — Claude Sonnet

Décrivez librement le programme en langage naturel. Plus puissant pour les contraintes complexes.

✍ "2 crĂ©neaux tous ensemble le matin, 2 crĂ©neaux de 2 tables l'aprĂšs-midi. Ramses ne joue pas Ă  White Castle."
Processus de génération
1
PrĂ©-calcul — le serveur calcule les contraintes (temps disponible, rĂ©partition idĂ©ale, teachers) et les injecte dans le prompt.
2
GĂ©nĂ©ration — Claude produit un programme JSON structurĂ© respectant les rĂšgles.
3
VĂ©rification — le serveur vĂ©rifie les rĂšgles P1/P2. Si violations dĂ©tectĂ©es, Claude reçoit les erreurs et corrige (max 2 itĂ©rations).
4
Post-traitement — le serveur injecte les teachers manquants, redistribue Ă©quitablement les joueurs et filtre les crĂ©neaux invalides.
📐
11
Rùgles du programme IA ✹ IA
P1
Le teacher est dans les joueurs de sa table — garanti par le serveur
P1
Un joueur ne peut ĂȘtre que sur une seule table par crĂ©neau — garanti par le serveur
P1
Les joueurs jouent idéalement au jeu qu'ils ont le plus voté
P2
Respecter exactement le nombre de créneaux tous ensemble / en parallÚle demandé
P2
Respecter les contraintes min/max joueurs de chaque jeu
P2
Tous les participants jouent à chaque créneau
P2
Tables parallÚles avec durées synchronisées et écart max 1 joueur
P3
Un joueur ne devrait pas ĂȘtre teacher sur plus de 3 jeux dans la journĂ©e
📆
12
Sondage Doodle

Sondez les disponibilitĂ©s avant de fixer une date. CrĂ©ez un sondage, partagez le lien, puis validez la date finale — une sĂ©ance est automatiquement créée et les participants disponibles sont inscrits.

📚
13
Archive & Compte rendu
đŸ“· MĂ©dias
Photos et vidéos de la séance.
🏆 Scores
Scores de chaque partie jouée.
📝 Notes
Notes générales sur la séance.
📊 Stats
Alimentent les statistiques globales du site.
⚙
14
Administration
SectionDescription
🎹 ApparenceThĂšme sombre/clair, couleurs, polices, mise en page — persistĂ©s pour tous les utilisateurs.
🔐 DroitsQui peut effectuer chaque action : tous / crĂ©ateur / admin.
📧 EmailActiver le reset de mot de passe par email. NĂ©cessite configuration SMTP dans .env.
🔗 InvitationsGĂ©nĂ©rer des liens d'invitation Ă  usage unique.
🔑 RĂ©cupĂ©rationURL de rĂ©cupĂ©ration du mot de passe admin via ADMIN_RESET_TOKEN.
đŸ’Ÿ SauvegardesBackup manuel ou automatique quotidien, 7 jours de rĂ©tention.
đŸ‘„ SĂ©lection joueursSĂ©lecteur de joueurs dans les crĂ©neaux : tous les membres ou inscrits Ă  la sĂ©ance.
đŸ€– SimulationBoutons de simulation de votes pour tester (Claudia, Claudine, Claudette, Claude François).
đŸ‘€ UtilisateursGĂ©rer les comptes, droits, mots de passe.