Documentation Overlive

Guide utilisateur complet pour gérer un tournoi esports de bout en bout — configuration du compte, tournois Challonge, postes de jeu, arbitres mobiles, overlays OBS pour la diffusion, et billing.

v1.4.0 Production payany.famille-canadas.fr Multi-tenant total
Commencer la lecture

Astuce : Cmd/Ctrl + P puis "Enregistrer en PDF" fonctionne aussi.

Nouveautés v1.4.0

Cette version est un changement d'architecture majeur. Avant, plusieurs utilisateurs du SaaS partageaient le même état global (couleurs, stations, arbitres, noms de tournois Challonge). Maintenant, chaque compte possède son propre environnement totalement isolé.

Multi-tenant total

  • Stations, arbitres, casters, configuration Challonge, couleurs, rosters : chaque utilisateur a maintenant son propre fichier de stockage, isolé sur disque.
  • Identifiant opaque par utilisateur : ton URL d'overlay contient un slug usr-XXXXXXXX unique (par exemple ?owner=usr-0ayu27si). Ce slug est déterministe (toujours le même pour toi) mais impossible à deviner ou à énumérer — il dépend d'un sel côté serveur.
  • Tous les endpoints /api/* sont protégés : si tu n'es pas connecté, tu reçois 401 Authentification requise. Avant, les routes publiques permettaient à un attaquant de lister les stations/arbitres/config des autres utilisateurs.
  • Les URLs d'overlay OBS doivent contenir ?owner=<slug> : le dashboard l'ajoute automatiquement dans l'URL générée. Sans ce paramètre, l'overlay tombe sur le mode legacy (par défaut = ton propre tenant si tu es connecté, sinon défaut global).
  • Console arbitre /referee/<token> : reste publique (le token de 64 bits tient lieu d'authentification implicite), mais les broadcasts vont uniquement vers les overlays du bon tenant.

Persistence après redeploy

Le bug critique "mes postes disparaissent à chaque redéploiement" est corrigé. Le dossier static/ pointait en dur sur l'image Docker, donc tout fichier JSON écrit pendant l'exécution (stations, casters, config) était écrasé au prochain bash deploy_saas.sh.

  • Maintenant, STATIC_DIR=/data/static dans le conteneur — monté sur le volume Docker tourney-saas-data, donc persistant.
  • Au démarrage, le serveur migre automatiquement les fichiers legacy (stations.json, casters.json, referee_logs.json, tournament_names.json, players.json, styles) depuis l'image vers ton dossier tenant.
  • Tout est désormais rangé par utilisateur dans /data/static/avatars/tenants/<user_id>/.

Identité opaque et non énumérable

Le slug usr-XXXXXXXX est calculé comme b32(user_id XOR TENANT_SLUG_SALT). Il change donc de forme si tu changes le sel serveur, mais reste stable pour un utilisateur donné tant que le sel ne bouge pas. Pas de /1, /2, /3 prévisibles.

Tests

10 nouveaux tests d'isolation multi-tenant (pytest). Total : 76 tests verts, lancés à chaque modification.

Notes de migration

  • Tes anciens fichiers de configuration ont été automatiquement rangés dans /data/static/avatars/tenants/<ton_user_id>/ au premier boot de la v1.4.0.
  • L'URL d'overlay que tu avais sauvegardée avant cette mise à jour continue de fonctionner (fallback legacy), mais on te recommande de regénérer l'URL depuis le dashboard pour avoir le ?owner=<slug>.
  • Le mot de passe admin a été régénéré et n'existe plus que dans la base (hash scrypt). L'ancienne variable d'env SAAS_ADMIN_PASSWORD est ignorée.

1. Démarrage rapide

Bienvenue ! Cette doc couvre tout ce que tu peux faire avec Overlive en tant qu'organisateur de tournoi. Suis les sections dans l'ordre pour une prise en main complète, ou saute directement au sujet qui t'intéresse via la table des matières à droite.

1.1 Connexion

Ouvre https://payany.famille-canadas.fr/login et connecte-toi avec ton email et ton mot de passe.

Page de connexion
Écran de connexion. Tu peux aussi te connecter via Google ou créer un compte gratuit.

1.2 Créer un compte

Si tu n'as pas encore de compte, l'inscription est gratuite et immédiate.

Page d'inscription
Inscription. Email + mot de passe. Tu reçois un mail de vérification pour activer ton compte.

1.3 Mot de passe oublié

Si tu as perdu ton mot de passe, demande un lien de réinitialisation par mail.

Mot de passe oublié
Mot de passe oublié. Reçois un lien sécurisé par mail (valable 1 heure, à usage unique).

1.4 Premier pas dans la console

Une fois connecté, tu arrives sur la console principale. Elle est organisée en sections :

  • Sidebar gauche — navigation entre les sections
  • Top bar — statut de connexion WebSocket, version, accès rapide à la maintenance
  • Centre — contenu de la section active
Console principale
Console principale (Réglages). Tu vois ici la configuration API Challonge, le choix du jeu, les couleurs et animations.

2. Compte & abonnement

Gère tes informations personnelles, ton abonnement et tes paiements depuis l'onglet Mon Compte.

Page Mon Compte
Mon Compte. Profil, abonnement, facturation, emails récents.

2.1 Plans disponibles

PlanPrixIdéal pour
Essai gratuit0 €Découverte, tournoi test
Pro9,99 €/moisTournois réguliers, overlays custom, branding
Pro Annuel99 €/anOrganisateurs toute l'année (2 mois offerts)
Paiement sécurisé Stripe Le paiement passe par Stripe (carte bancaire). Tu peux annuler à tout moment depuis ton dashboard. Les paiements sont sécurisés 3D Secure quand requis par ta banque.

3. Tournois (Challonge)

Overlive s'appuie sur Challonge pour gérer les brackets. Tu crées ton tournoi sur Challonge, tu colles ta clé API, et Overlive se synchronise.

3.1 Configuration de la clé API Challonge

  1. Va sur challonge.com/settings/developer et copie ta clé API
  2. Dans Overlive, ouvre Réglages → Configuration API Challonge
  3. Colle ta clé et clique sur Enregistrer & vérifier
  4. Le bouton passe au vert si la clé est valide

3.2 Sélectionner un tournoi

Ouvre l'onglet Tournoi. Overlive liste tous tes tournois Challonge et tu en sélectionnes un actif. Les matchs et participants se chargent automatiquement.

Liste des tournois
Section Tournoi. Sélectionne un tournoi Challonge, choisis le match en cours, configure les casters.
Pour tester sans Challonge : la démo utilise un tournoi factice ("Championship — Demo") avec 8 joueurs fictifs. Active le mode mock via TOURNEY_DOCS_MOCK=1 dans l'env du conteneur.

3.3 Exemple de joueurs (démo)

Voici les 8 joueurs d'exemple utilisés dans cette documentation. Les avatars sont des initiales sur gradient (style Discord / Notion) — chaque joueur a sa propre couleur et son tag d'équipe.

AEG VOL RBN PHO WLF TIT GLD DRK
Alex Storme
Alex Storme
AEG
Mia Rodriguez
Mia Rodriguez
VOL
Tomoki Kuroda
Tomoki Kuroda
RBN
Léa Bertrand
Léa Bertrand
PHO
Diallo Kone
Diallo Kone
WLF
Sofia Vargas
Sofia Vargas
TIT
Julien Marchand
Julien Marchand
GLD
Esma Pereira
Esma Pereira
DRK

4. Postes de jeu (Stations)

Un poste de jeu = une station physique où se déroule un match. Chaque poste a son overlay dédié qu'OBS affichera.

4.1 Créer un poste

  1. Ouvre Overlays → Postes de jeu
  2. Donne un identifiant (ex : poste-1) et un libellé (ex : Poste 1)
  3. Choisis une couleur (visible sur l'overlay overview)
  4. Clique sur Créer

4.2 Assigner un match à un poste

Une fois le poste créé, tu peux lui assigner un match via le menu déroulant. Le match est alors diffusé en direct sur l'overlay dédié.

Postes de jeu
Section Overlays. Crée et gère tes postes de jeu. Chaque poste a 3 overlays (score bas, score haut petit, score haut grand) prêts à être ajoutés dans OBS.

4.3 Les 3 overlays par poste

TypeUsage OBSURL pattern
Score basBas d'écran, sous un cast/overlay/score_desktop?setup=poste-1
Score haut (petit)Bandeau haut compact/overlay/score-below?setup=poste-1
Score haut (grand)Plein écran pendant un match/overlay/score_below_desktop?setup=poste-1

5. Arbitres

Chaque poste a son arbitre qui saisit les scores en direct depuis un téléphone ou une tablette.

5.1 Créer un arbitre

  1. Va dans Overlays → Arbitres
  2. Remplis : nom, email (optionnel mais recommandé), poste, PIN (optionnel, 4-8 chiffres)
  3. Clique sur Créer
  4. Si tu as renseigné un email, l'arbitre reçoit automatiquement un mail avec son code PIN et son lien de console
Mail automatique aux arbitres Depuis v1.3.3, chaque création ou régénération de PIN envoie un mail à l'arbitre avec :
  • Son code PIN en gros
  • Un bouton "Ouvrir ma console arbitre" (lien direct)
  • Valable tant que le PIN n'est pas régénéré
Section arbitres
Section Arbitres. Liste des arbitres avec QR code, lien console, PIN défini, et bouton pour régénérer le PIN ou supprimer.

5.2 Générer toutes les cartes PDF

Le bouton "Générer toutes les cartes (PDF + nouveaux PINs)" crée un PDF par arbitre contenant son QR code + PIN, et un ZIP avec toutes les cartes. Attention : les anciens PINs sont invalidés.

5.3 Auditer l'activité

Chaque action d'un arbitre (login, sélection de match, MAJ score, déclaration gagnant, reset) est consignée dans un journal consultable depuis l'icône à droite de chaque arbitre.

6. Casters (Commentateurs)

Affiche les noms et avatars de tes commentateurs sur l'overlay dédié pour donner une touche pro à ta diffusion.

Alex Cast
Alex Cast
Twitch · @alex_cast
Mira Zeller
Mira Zeller
Twitch · @mira.zeller

6.1 Configurer

  1. Ouvre Tournoi → Commentateurs
  2. Remplis pour chaque caster : nom, pseudo, plateforme (Twitch, X, YouTube, Instagram, TikTok, Discord, Bluesky, custom)
  3. Upload un avatar (PNG/JPG/SVG)
  4. Choisis la durée d'affichage (par défaut 8 secondes)

6.2 Afficher sur l'overlay

L'overlay caster est disponible à l'URL :

/overlay/casters_desktop

Ajoute cette URL comme source "Navigateur" dans OBS.

7. Overlays OBS

Overlive fournit 5 overlays prêts à intégrer dans OBS Studio comme sources "Navigateur".

7.1 Overlay Score (match en direct)

Affiche les deux joueurs, leurs scores, et le round en cours. Visible pendant tout le match.

Overlay Score
Overlay Score desktop. Joueur 1 (gauche) vs Joueur 2 (droite), scores, round. Le gagnant est mis en évidence en jaune à la fin.

URL à utiliser dans OBS :

/overlay/score_desktop?setup=poste-1

7.2 Overlay Casters

Affiche les cartes des commentateurs avec leur avatar et pseudo pendant les temps morts.

Overlay Casters
Overlay Casters desktop. Cartes gauche/droite avec avatars. Apparaît/disparaît selon la configuration du dashboard.

7.3 Overlay Recap (tous les matchs)

Liste tous les matchs du tournoi avec leur statut (live / à venir / terminé).

Overlay Recap
Overlay Recap desktop. Affiché en bas d'écran pendant les pauses pour rappeler les matchs à venir.

7.4 Overlay Notification

Notifications toast en direct (début de match, gagnant, reset).

Overlay Notification
Overlay Notification desktop. Apparaît brièvement pour signaler un événement (ex : "Match 12 — démarrage").

7.5 Overlay Overview (bracket)

Vue d'ensemble du bracket complet du tournoi.

Overlay Overview
Overlay Overview desktop. Le bracket complet avec les statuts live/en attente/terminé.

8. Console arbitre (mobile)

L'arbitre accède à sa console depuis un téléphone, en scannant le QR code fourni à la création.

8.1 Connexion

  1. L'arbitre scanne son QR code (ou clique le lien reçu par mail)
  2. Il arrive sur la console de son poste
  3. Il peut saisir son PIN manuellement (4-8 chiffres) s'il n'a plus le lien

8.2 Actions disponibles

  • Sélection du match — choisir le match à arbitrer
  • Démarrer le match — passe le statut à "live"
  • Score +/- — incrémenter/décrémenter les scores des deux joueurs
  • Déclarer le gagnant — termine le match
  • Réinitialiser — remet scores + gagnant à zéro

8.3 Synchronisation temps réel

Toutes les actions sont synchronisées en direct via WebSocket avec les overlays OBS. Pas besoin de rafraîchir — les changements apparaissent en moins d'une seconde à l'écran.

Reconnexion automatique Si l'arbitre perd la connexion Wi-Fi, une bannière rouge apparaît en haut de la console. La reconnexion est automatique (intervalle exponentiel jusqu'à 10s).

9. Diffusion en direct

Pour streamer ton tournoi sur Twitch, YouTube ou Facebook, suis ce pipeline :

9.1 Setup OBS Studio

  1. Télécharge OBS Studio sur obsproject.com
  2. Crée une scène "Tournoi — Vue principale"
  3. Ajoute tes sources habituelles (caméra, micro, capture de jeu)
  4. Pour chaque overlay Overlive, ajoute une source "Navigateur" avec :
    • URL : celle générée par Overlive (ex : https://payany.famille-canadas.fr/overlay/score_desktop?setup=poste-1)
    • Largeur / Hauteur : 1920 × 1080 (ou résolution de ta scène)
    • Cocher "Rafraîchir le navigateur quand la scène devient active"
    • Cocher "Source transparente" (indispensable !)
  5. Positionne l'overlay là où tu veux (ex : overlay score en bas)

9.2 Brancher Twitch / YouTube

Dans OBS, va dans Paramètres > Diffusion et configure :

  • Service : Twitch / YouTube / Facebook
  • Clé de stream : récupère-la sur le dashboard de la plateforme
  • Bitrate : 4000-6000 kbps (selon ta connexion)

9.3 Checklist avant de partir en live

✓Vérification
☐Au moins un poste créé + un arbitre assigné
☐Le match en cours est sélectionné sur le dashboard
☐Les 5 overlays sont dans OBS avec "Source transparente" cochée
☐Les casters ont un avatar et un pseudo
☐L'arbitre a testé son lien (scan QR) sur son téléphone
☐Connexion internet stable (test speedtest.net > 10 Mbps upload)

10. Dépannage

10.1 L'overlay ne s'affiche pas dans OBS

Cause fréquente : "Source transparente" pas cochée. Ouvre les propriétés de la source navigateur et coche la case.

Autre cause : l'URL est inaccessible depuis OBS. Teste-la dans un navigateur d'abord — si elle ne charge pas, c'est un problème réseau (pare-feu, etc.).

10.2 Le paiement ne crédite pas le compte

Le paiement passe par Stripe. Si les crédits n'arrivent pas :

  1. Va sur Dashboard Stripe → Développeurs > Webhooks
  2. Vérifie qu'un endpoint est configuré pour https://payany.famille-canadas.fr/api/billing/webhook
  3. Vérifie que le whsec_... dans Admin > Billing correspond à celui de Stripe
  4. Regarde les 50 derniers webhooks reçus dans Admin > Billing > Webhooks

10.3 L'arbitre ne reçoit pas le mail

Si SMTP n'est pas configuré, les mails ne partent pas réellement mais sont consignés dans la table email_history. Visible dans Mon Compte > Mes derniers emails.

Pour vraiment envoyer les mails : configure SMTP dans Admin > Billing > SMTP (SendGrid, Mailgun, Gmail, etc.).

10.4 L'email de vérification a un lien sans domaine

Le mail contient http://verify-email/?token=... au lieu de https://payany.famille-canadas.fr/verify-email?token=.... C'est corrigé en v1.3.3 : le serveur détecte les headers reverse-proxy (X-Forwarded-Proto, X-Forwarded-Host) et reconstruit la bonne URL.

10.5 Le match en cours ne se met pas à jour sur l'overlay

Cause fréquente : le WebSocket est déconnecté. Vérifie la pastille en haut à droite du dashboard : CONNECTÉ = OK NON CONNECTÉ = problème.

Si "NON CONNECTÉ", rafraîchis la page (Cmd+R / F5).

10.6 Contacter le support

Si rien de tout ça ne marche, ouvre un ticket avec :

  • Description du problème
  • Capture d'écran
  • URL impactée
  • Navigateur + version

Overlive v1.4.0 — Documentation générée pour la prod

Cette page est aussi accessible hors-ligne en PDF via le bouton "Télécharger en PDF" en haut.