Onboarding guidé systématique + tableau de bord simplifié
Build and deploy / test-python (push) Failing after 1m48s
Build and deploy / test-js (push) Successful in 53s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped

Comportement SYSTÉMATIQUE à chaque création de jeu (admin compris), pas
une formalité réservée à l'inscription : /onboarding (routes/onboarding/)
devient le point d'entrée unique — 4 cartes retournables (survol =
explication au dos), défilement horizontal animé vers le nom du jeu. Un
admin y repasse à volonté (pas de project_slug dédié, jamais bloqué/
redirigé vers un projet précédent) ; un compte "user" n'en a plus qu'un
créé d'office (routes/auth/register_2fa.py), guidé ici à la place.

- db/games/game_type_catalog.py : catalogue des 4 types (Quiz/
  Embranchement-escape game/RPG/Créer mon jeu de A à Z), _meta['onboarding_type']
  décide du "kind" du premier écran créé et si le tableau de bord complet
  reste accessible.
- routes/games/game_dashboard.py, templates/game_dashboard_simple.html :
  un type restreint (quiz/embranchement/rpg) voit désormais SON tableau
  de bord (même route que "custom"), rendu en version simplifiée — juste
  ses écrans en cartes avec un aperçu RÉEL du contenu (scène mise à
  l'échelle par container query CSS, adaptée à la largeur réelle de la
  carte). "+ Ajouter un écran" n'y propose pas de choix de type : imposé
  par le projet (routes/screens/screens_new.py), verrouillé aussi côté
  serveur.
- core/auth_guard.py : plus de blocage de game_dashboard par type — la
  restriction se fait au rendu, pas à l'accès à la route.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-02 06:22:45 +02:00
co-authored by Claude Sonnet 5
parent 0f23024882
commit 76a50fa87a
23 changed files with 876 additions and 52 deletions
+11 -18
View File
@@ -11,24 +11,17 @@
<div class="twoCol">
<div class="colLeft">
<h2>Créer un jeu</h2>
<form method="post" action="{{ url_for('games_new') }}" class="card">
<div class="formField">
<label for="name">Nom du nouveau jeu</label>
<input type="text" id="name" name="name" placeholder="ex. CyberQuest RGPD" required>
</div>
<!-- Fondations multi-éditeurs : le type choisi ici gate quel éditeur
(générique ou scène 2D) et quel rendu jouable ce jeu utilisera,
voir db/games/get_game_type.py — non modifiable ensuite. -->
<div class="formField">
<label for="game_type">Type de jeu</label>
<select id="game_type" name="game_type">
<option value="document">Document — quiz, formulaire, contenu (éditeur actuel)</option>
<option value="jeu_2d">Jeu 2D — RPG/serious game (scène, personnages, collision)</option>
</select>
</div>
<div class="actionsRow"><button type="submit" class="primary">+ Créer le jeu</button></div>
<p class="hint" style="margin-top:6px;">Crée un dossier avec index.html / index.css / index.js reliés entre eux, et une base de données dédiée à ce jeu.</p>
</form>
<!-- Onboarding guidé (voir routes/onboarding/onboarding_new.py) :
comportement SYSTÉMATIQUE à chaque création de jeu, pas une
formalité réservée à l'inscription — un admin y repasse à
volonté (illimité, pas de project_slug dédié qui bloquerait le
retour). Choisir un type ici, ce n'est pas juste pour un compte
"user" : ça prépare aussi le jour où un admin (ou un compte
payant multi-projet) gère plusieurs jeux de types différents. -->
<div class="card">
<p class="hint" style="margin-top:0;">Choisis un type de jeu, nomme-le : Forge Engine crée le projet et t'envoie directement sur l'éditeur adapté.</p>
<div class="actionsRow"><a href="{{ url_for('onboarding_new') }}" class="button primary">+ Créer un jeu</a></div>
</div>
</div>
<div class="colRight">