Guide de Démarrage#
Bienvenue sur Playlab42 ! Ce guide vous accompagne dans la configuration de votre environnement de développement et vos premières contributions.
Table des matières#
- Prérequis
- Installation
- Environnement de développement
- Premiers pas
- Workflow de contribution
- Commandes utiles
- Prochaines étapes
Prérequis#
Logiciels requis#
| Logiciel | Version minimum | Installation |
|---|---|---|
| Git | 2.30+ | git-scm.com |
| Docker | 20.10+ | docker.com/get-started |
| Docker Compose | 2.0+ | Inclus avec Docker Desktop |
| Make | 4.0+ | Préinstallé (macOS/Linux) ou GnuWin32 (Windows) |
Note importante : Tout le développement se fait dans Docker. Vous n'avez pas besoin de Node.js installé sur votre machine.
Vérifier les installations#
# Vérifier Git
git --version
# → git version 2.30.0 ou supérieur
# Vérifier Docker
docker --version
# → Docker version 20.10.0 ou supérieur
# Vérifier Docker Compose
docker compose version
# → Docker Compose version 2.0.0 ou supérieur
# Vérifier Make
make --version
# → GNU Make 4.0 ou supérieur
Compte GitHub#
- Créer un compte sur github.com si vous n'en avez pas
- Configurer une clé SSH (recommandé) : docs.github.com/authentication
Installation#
1. Cloner le dépôt#
# Avec SSH (recommandé)
git clone git@github.com:z4ppy/playlab42.git
# Ou avec HTTPS
git clone https://github.com/z4ppy/playlab42.git
# Se positionner dans le projet
cd playlab42
2. Initialiser l'environnement Docker#
# Une seule commande pour tout configurer
make init
Ce que fait make init :
- Build l'image Docker (Node.js 25 Alpine)
- Démarre le container
- Installe les dépendances npm (
npm install) - Affiche le statut
Durée : 2-5 minutes (selon connexion internet)
3. Vérifier l'installation#
# Vérifier que le container tourne
make status
# Sortie attendue :
# ✅ Container 'playlab42-dev' is running
Problèmes ? Voir Troubleshooting en fin de document.
Environnement de développement#
Architecture Docker-first#
Tout tourne dans Docker, rien sur le host :
┌─────────────────────────────────────┐
│ Votre machine (host) │
│ │
│ ┌───────────────────────────────┐ │
│ │ Container Docker │ │
│ │ (playlab42-dev) │ │
│ │ │ │
│ │ • Node.js 25 │ │
│ │ • npm dependencies │ │
│ │ • Tous les outils dev │ │
│ │ │ │
│ │ Code monté depuis host │ │
│ │ (bind mount) │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
Avantages :
- Environnement identique pour tous les développeurs
- Pas de pollution du système hôte
- Pas de conflits de versions Node.js
- Facile à supprimer/réinitialiser
Shell de développement#
Pour exécuter des commandes dans le container :
# Ouvrir un shell interactif
make shell
# Vous êtes maintenant dans le container
node@playlab42:/app$ npm --version
node@playlab42:/app$ ls -la
node@playlab42:/app$ exit # Pour sortir
Alternative : Exécuter des commandes npm directement depuis le host :
# Syntaxe : make npm CMD="<commande>"
make npm CMD="install lodash"
make npm CMD="run test"
make npm CMD="run lint"
Serveur de développement#
# Démarrer le serveur statique (port 5242)
make serve
# Ou via npm
make npm CMD="run serve"
Accès : http://localhost:5242
Ce qui est servi :
- Portail principal (
index.html) - Tous les tools (
tools/) - Tous les games (
games/) - Tous les parcours (
parcours/)
Arrêter le serveur : Ctrl+C
Premiers pas#
1. Parcourir le code#
# Structure du projet
tree -L 2 -I 'node_modules'
playlab42/
├── index.html # Portail principal
├── app.js # Logique du portail
├── style.css # Styles globaux
├── lib/ # Bibliothèques partagées
│ ├── gamekit.js
│ ├── seeded-random.js
│ └── assets.js
├── tools/ # Outils HTML standalone
├── games/ # Jeux autonomes
│ └── tic-tac-toe/
├── parcours/ # Contenus pédagogiques
├── data/ # Catalogues générés
├── docs/ # Documentation
└── openspec/ # Spécifications
2. Exécuter les tests#
# Lancer tous les tests
make test
# Mode watch (relance automatiquement)
make test-watch
# Avec coverage
make npm CMD="run test:coverage"
3. Vérifier la qualité du code#
# Linter (ESLint)
make lint
# Corriger automatiquement
make lint-fix
4. Builder les catalogues#
# Builder tout
make build
# Ou individuellement
make build-catalogue # data/catalogue.json
make build-parcours # data/parcours.json
5. Tester le portail localement#
# Démarrer le serveur
make serve
# Ouvrir http://localhost:5242 dans le navigateur
Vérifier :
- Le portail charge
- Le catalogue affiche les tools et games
- Cliquer sur un tool/game ouvre l'iframe
- Pas d'erreurs dans la console navigateur
Workflow de contribution#
Contribuer à Playlab42#
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Fork │ → │ Branch │ → │ Code │ → │ PR │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
1. Fork et clone#
Si vous n'avez pas accès direct au dépôt :
# 1. Fork sur GitHub (bouton "Fork")
# 2. Cloner votre fork
git clone git@github.com:VOTRE-USERNAME/playlab42.git
cd playlab42
# 3. Ajouter le remote upstream
git remote add upstream git@github.com:z4ppy/playlab42.git
2. Créer une branche feature#
# Créer et basculer sur une nouvelle branche
git checkout -b feature/ma-fonctionnalite
# Ou pour un bug fix
git checkout -b fix/correction-bug
Convention de nommage :
feature/description-courte: Nouvelle fonctionnalitéfix/description-courte: Correction de bugdocs/description-courte: Documentationrefactor/description-courte: Refactoringtest/description-courte: Tests
3. Développer#
Créer un tool :
# Suivre le guide
# → docs/guides/create-tool.md
Créer un game :
# Suivre les guides
# → docs/guides/create-game-engine.md
# → docs/guides/create-game-client.md
Créer un epic (parcours) :
# Suivre le guide
# → docs/guides/create-epic.md
4. Tester#
# Tests unitaires
make test
# Linter
make lint
# Build
make build
# Serveur local
make serve
# → Tester manuellement dans le navigateur
5. Commit#
# Ajouter les fichiers
git add .
# Commit avec message descriptif
git commit -m "feat: ajout du tool JSON Formatter"
Convention de commits (Conventional Commits) :
<type>: <description>
Types :
- feat: Nouvelle fonctionnalité
- fix: Correction de bug
- docs: Documentation
- style: Formatage (pas de changement de code)
- refactor: Refactoring
- test: Ajout/modification de tests
- chore: Maintenance (build, config, etc.)
Exemples :
git commit -m "feat: ajout du tool Base64 Encoder"
git commit -m "fix: correction bug affichage catalogue"
git commit -m "docs: amélioration README"
git commit -m "test: ajout tests pour SeededRandom"
6. Push#
# Push vers votre fork (ou branch)
git push origin feature/ma-fonctionnalite
7. Ouvrir une Pull Request#
Sur GitHub :
- Aller sur https://github.com/z4ppy/playlab42
- Cliquer sur "Pull requests" > "New pull request"
- Sélectionner votre branche
- Remplir le template de PR :
- Titre : Description courte et claire
- Description : Contexte, changements, tests
- Checklist : Cocher les cases applicables
- Cliquer sur "Create pull request"
Les checks CI vont s'exécuter :
- Lint
- Tests
- Build
- Security audit
Attendre la review :
- Un mainteneur reviewera votre code
- Apporter les modifications demandées si nécessaire
- Une fois approuvée, la PR sera mergée
8. Après le merge#
# Mettre à jour votre branche main locale
git checkout main
git pull upstream main # ou origin main
# Supprimer la branche feature
git branch -d feature/ma-fonctionnalite
Commandes utiles#
Docker#
make init # Initialiser (build + up + install)
make up # Démarrer le container
make down # Arrêter le container
make restart # Redémarrer le container
make status # Statut du container
make logs # Voir les logs
make shell # Shell interactif dans le container
make clean # Supprimer container et volumes
Développement#
make serve # Serveur statique (port 5242)
make build # Build complet (catalogue + parcours + bookmarks)
make build-catalogue # Build catalogue.json
make build-parcours # Build parcours.json
Tests et qualité#
make test # Lancer les tests
make test-watch # Tests en mode watch
make lint # Vérifier le code avec ESLint
make lint-fix # Corriger automatiquement
Sécurité#
make security-audit # Audit de sécurité complet
make security-npm # Audit npm seulement
make security-eslint # ESLint security
npm (via container)#
make npm CMD="install <package>"
make npm CMD="run <script>"
make npm CMD="test"
Prochaines étapes#
Documentation à lire#
Pour tous :
- docs/CONCEPTS.md - Comprendre les concepts clés
- docs/FEATURES.md - Voir les features MVP
Pour créer du contenu :
- docs/guides/create-tool.md - Créer un tool
- docs/guides/create-game-engine.md - Créer un moteur de jeu
- docs/guides/create-game-client.md - Créer l'UI d'un jeu
- docs/guides/create-bot.md - Créer un bot IA
- docs/guides/create-epic.md - Créer un parcours
Pour contribuer au core :
- docs/guides/architecture.md - Architecture système
- docs/guides/contributing.md - Guide de contribution complet
- openspec/project.md (source Markdown) - Conventions du projet
Exemples de première contribution#
Facile :
- Ajouter un tool simple (JSON formatter, Base64 encoder)
- Corriger une typo dans la documentation
- Améliorer un test existant
Moyen :
- Ajouter un nouveau game simple (Snake, Memory)
- Créer un epic (parcours pédagogique)
- Améliorer l'UI du portail
Avancé :
- Créer un bot IA pour un game existant
- Ajouter une fonctionnalité au GameKit
- Améliorer le système de build
Rejoindre la communauté#
- Issues : https://github.com/z4ppy/playlab42/issues
- Discussions : https://github.com/z4ppy/playlab42/discussions
- Pull Requests : https://github.com/z4ppy/playlab42/pulls
Ressources externes#
Troubleshooting#
Docker ne démarre pas#
Symptôme : make init échoue
Solutions :
# Vérifier que Docker est démarré
docker ps
# Redémarrer Docker Desktop (macOS/Windows)
# Ou redémarrer le daemon Docker (Linux)
sudo systemctl restart docker
# Nettoyer et recommencer
make clean
make init
Permissions (Linux)#
Symptôme : Erreurs de permissions dans le container
Solution :
# Ajouter votre utilisateur au groupe docker
sudo usermod -aG docker $USER
# Se déconnecter/reconnecter pour appliquer
# Ou :
newgrp docker
Port 5242 déjà utilisé#
Symptôme : make serve échoue (port déjà pris)
Solution :
# Trouver le processus
lsof -i :5242
# Tuer le processus
kill -9 <PID>
# Ou utiliser un autre port
npx serve . -p 3000
Tests échouent#
Symptôme : make test affiche des erreurs
Solutions :
# Réinstaller les dépendances
make npm CMD="ci"
# Vérifier la version Node.js
make shell
node --version # Devrait être v25.x
# Nettoyer le cache Jest
make npm CMD="run test -- --clearCache"
Build échoue#
Symptôme : make build échoue
Solutions :
# Vérifier les manifests (tool.json, game.json)
# Valider le JSON : https://jsonlint.com/
# Vérifier les logs
make build 2>&1 | tee build.log
# Consulter docs/TROUBLESHOOTING.md
Pour plus de problèmes courants, voir docs/TROUBLESHOOTING.md.
Aide et support#
Vous avez une question ?#
- Documentation : Chercher dans
docs/ - Issues : Chercher dans les issues existantes
- Discussions : Poser une question dans GitHub Discussions
- Mainteneurs : Mentionner
@z4ppydans une issue
Vous avez trouvé un bug ?#
- Vérifier qu'il n'existe pas déjà dans les issues
- Ouvrir une nouvelle issue avec :
- Description claire du bug
- Steps to reproduce
- Comportement attendu vs observé
- Environnement (OS, Docker version, etc.)
- Logs/screenshots si applicable
Vous voulez proposer une feature ?#
- Ouvrir une Discussion (pas une issue) pour discuter
- Si approuvée, créer une proposition OpenSpec :
/openspec:proposal - Implémenter après validation
Bon développement ! 🚀#
Vous êtes maintenant prêt à contribuer à Playlab42. N'hésitez pas à explorer le code, poser des questions, et créer du contenu !
Document maintenu par l'équipe Docaposte Dernière mise à jour : 2025-12-14