playlab42
Health Warn
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- spawnSync — Synchronous process spawning in .github/workflows/ci.yml
- process.env — Environment variable access in .github/workflows/ci.yml
- fs module — File system access in .github/workflows/ci.yml
- fs module — File system access in .github/workflows/security-audit.yml
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Plateforme pédagogique complète pour la formation au développement assisté par IA : supports de cours, base de connaissance, outils et jeux collaboratifs.

Playlab42
Comprendre l’IA. Expérimenter en jouant. Construire ensemble.
Un laboratoire pédagogique ouvert, où les parcours de formation
rencontrent les mini-jeux, les outils et le développement assisté par IA.
Explorer la plateforme → · Démarrer en local · Contribuer · Documentation
- Un terrain de jeu, un vrai projet
- Points forts
- Explorer
- Architecture
- Démarrage rapide
- Contribuer
- Documentation
- Communauté et support
- Licence
Un terrain de jeu, un vrai projet
Playlab42 se découvre dans le navigateur et s’enrichit dans le dépôt. Pas de compte à créer, pas de backend à déployer : la plateforme est entièrement statique.
Pendant une formation, on explore un concept, on l’expérimente, puis on crée quelque chose avec l’aide d’un agent IA. Un outil, un jeu, un parcours ou une amélioration de la documentation : chaque contribution peut devenir une ressource pour les sessions suivantes.
Le code fait lui aussi partie du cours. Moteurs de jeux déterministes, tests automatisés, spécifications OpenSpec, instructions pour agents et CI/CD rendent les pratiques de développement visibles, pas seulement théoriques.
Points forts
- Zéro installation pour apprendre. Tout s’ouvre dans le navigateur : pas de compte, pas de serveur, et vos préférences et scores restent dans votre navigateur.
- Des moteurs de jeux déterministes. Mêmes règles dans le navigateur et dans Node, graines reproductibles, bots interchangeables : de quoi rejouer, tester et comparer.
- Accessible et mobile en ligne de mire. Thèmes clair et sombre, navigation clavier, et un contrôle de l’usage sur écran étroit à chaque Pull Request.
- Un projet qui se prouve. Tests, vérification de types, audits de sécurité et parcours navigateur tournent en CI, et les évolutions de comportement sont spécifiées avec OpenSpec.
- Fait pour être étendu. Un manifest, un dossier, une Pull Request : votre outil, jeu ou parcours rejoint le catalogue.
- Prêt pour les agents IA. Instructions et skills de projet versionnés avec le code.
Explorer
| Univers | Ce qu’on y trouve | Quelques portes d’entrée |
|---|---|---|
| Parcours | Des contenus structurés en slides pour apprendre à son rythme. | Agents de code, Deep learning, OpenSpec |
| Outils & simulations | Des utilitaires et des expériences interactives pour manipuler les concepts. | JSON Formatter, Particle Life, Relativity Lab 3D |
| Jeux | Des jeux autonomes, avec des moteurs de règles et des bots pour expérimenter la logique et la stratégie. | Morpion, Mastermind, Go 9×9 |
| Bookmarks | Une sélection de ressources externes sur l’écosystème IA et le développement. | Modèles & API, MCP, Prompt engineering |
Première visite ? Ouvrez la plateforme et commencez par le parcours « PlayLab42 — Guide et usine logicielle ».
Architecture
Un site statique, des contenus autonomes, un socle partagé.
flowchart TB
subgraph preparation["À la construction"]
sources["Contenus & manifests<br/>tools · games · parcours · bookmarks"]
build["Scripts de build<br/>catalogues · guides · TypeScript"]
files["Site prêt à servir<br/>HTML · CSS · JavaScript · JSON"]
sources --> build --> files
end
subgraph browser["Dans le navigateur"]
portal["Portail Playlab42<br/>catalogue · recherche · bookmarks"]
apps["Outils & jeux<br/>applications autonomes"]
slides["Parcours pédagogiques<br/>viewer & slides HTML"]
storage[("localStorage<br/>préférences · scores · progression")]
portal -->|iframe| apps
portal -->|viewer & iframe| slides
portal <-->|persistance locale| storage
end
files -->|serveur statique / GitHub Pages| portal
classDef accent fill:#ecfeff,stroke:#0891b2,color:#164e63
classDef content fill:#f0fdf4,stroke:#16a34a,color:#14532d
classDef neutral fill:#f8fafc,stroke:#64748b,color:#1e293b
class portal accent
class apps,slides content
class sources,build,files,storage neutral
Les scripts préparent les catalogues, les guides et les dépendances destinées au navigateur, et transpilent les contenus TypeScript avant la mise en ligne. À l’usage, le navigateur charge les fichiers statiques ; aucune API applicative, base de données serveur ou authentification n’est nécessaire.
Les outils et les jeux peuvent aussi être ouverts en dehors du portail. Les bibliothèques de lib/ apportent les briques communes : thèmes, générateur aléatoire déterministe, viewer de parcours et GameKit, le SDK de communication entre les jeux et le portail. Les préférences, scores et progressions restent stockés localement dans le navigateur, sans synchronisation entre appareils.
Stack
| Couche | Technologies |
|---|---|
| Interface | HTML, CSS, JavaScript en modules ES ; TypeScript optionnel |
| Construction | Node.js 26 dans Docker et la CI (minimum 24), esbuild, scripts de génération |
| Qualité | Jest, Playwright, ESLint, vérification des types TypeScript |
| Environnement | Docker, Docker Compose, Make |
| Livraison | GitHub Actions → GitHub Pages |
| Travail assisté par IA | Instructions pour agents, skills de projet, spécifications OpenSpec |
Démarrage rapide
Pour consulter le projet, la version en ligne suffit. Pour développer, l’environnement est Docker-first : les dépendances et les commandes Node.js tournent dans le conteneur.
Prérequis : Git, Docker avec Docker Compose et Make.
git clone https://github.com/z4ppy/playlab42.git
cd playlab42
# Construire l’environnement, démarrer le conteneur et installer les dépendances
make init
# Préparer les contenus, catalogues et guides sans enrichissement réseau
make npm CMD="run build:local"
# Afficher l’URL locale, puis lancer le serveur
make info
make serve
Ouvrez l’URL affichée par make info. Le port externe est calculé à partir du nom du dossier, dans la plage 5200–5299 ; 5242 est le port interne du conteneur.
Au quotidien
| Commande | Usage |
|---|---|
make shell |
Ouvrir un shell dans le conteneur |
make npm CMD="run build:local" |
Reconstruire les contenus et catalogues sans enrichissement réseau |
make npm CMD="run build" |
Reconstruire avec enrichissement des métadonnées des bookmarks |
make build-ts |
Transpiler les contenus TypeScript |
make npm CMD="run build:ts:watch" |
Transpiler TypeScript en continu pendant le développement |
make test |
Exécuter les tests Jest |
make test-e2e |
Exécuter les parcours navigateur dans une image Docker dédiée |
make lint |
Vérifier la qualité du code |
make typecheck |
Vérifier les types |
make openspec-validate |
Valider strictement les spécifications avec la CLI épinglée |
make down |
Arrêter les conteneurs |
Chaque worktree utilise un nom de projet Docker et un port calculés à partir de son dossier. Initialisez l’environnement dans chaque worktree avec make init, puis consultez son URL avec make info.
La plage de ports étant limitée, une collision reste possible. Pour choisir explicitement le port d’une instance, utilisez le même réglage pour ses commandes :
export PLAYLAB_PORT=5280
make init
make info
make serve
Contribuer
Une petite contribution peut devenir un excellent support de formation. Vous pouvez créer un outil, ajouter un jeu ou un bot, écrire un parcours, proposer une ressource ou améliorer l’existant.
- Créez un fork si nécessaire, puis une branche dédiée.
- Ajoutez votre contenu et son manifest en suivant le guide correspondant.
- Régénérez les catalogues, essayez le résultat dans le navigateur et lancez les contrôles adaptés : tests, lint et types.
- Ouvrez une Pull Request : la contribution est relue avant intégration et publication.
Tout est résumé dans CONTRIBUTING.md. Une question, un bug, une idée ? Les modèles d’issues vous guident. Si vous ne savez pas par où commencer, une correction de documentation ou un test sur mobile est une excellente première contribution.
Renseignez votre nom ou pseudo dans le champ author du manifest : il est affiché sur la carte de votre contribution.
| Vous souhaitez… | Commencer ici |
|---|---|
| Créer un outil | Guide de création d’un outil |
| Développer un jeu | Moteur de règles, interface et bots |
| Écrire un parcours | Guide de création d’un epic |
| Proposer une ressource | Guide de contribution |
| Partir d’un gabarit | Kit de contribution et galerie des composants |
| Travailler avec un agent IA | Instructions du projet |
| Connaître les règles de la communauté | Code de conduite |
Se repérer dans le dépôt
playlab42/
├── index.html, app.js, style.css # Entrée du portail
├── app/ # Modules du portail
├── tools/ # Outils HTML et mini-apps JS/TS
├── games/ # Interfaces, moteurs de règles et bots
├── parcours/epics/ # Parcours, manifests et slides
├── bookmarks/ # Ressources externes classées par thème
├── lib/ # GameKit, thèmes, viewer et utilitaires
├── scripts/ # Génération des catalogues et build TS
├── data/ # Catalogues générés, non versionnés
├── site/ # Archive publique préparée, non versionnée
├── docs/ # Guides et documentation
├── templates/ # Gabarits de jeux, outils et parcours
├── e2e/ # Parcours navigateur Playwright
├── openspec/ # Spécifications et propositions de changement
├── .github/skills/ # Skills de projet versionnés
└── .github/workflows/ # CI, audits et déploiement
Documentation
| Pour… | Référence |
|---|---|
| Comprendre les notions du projet | Concepts & glossaire |
| Comprendre la génération des données | Build des catalogues |
| Consulter les contrats techniques | Spécifications OpenSpec |
| Appliquer le workflow de spécification | Workflow OpenSpec |
| Utiliser les skills du projet | Skills de projet |
| Comprendre la stratégie de tests | Stratégie de tests |
| Comprendre l'usine et ses limites | Usine logicielle et feuille de route |
| Déployer la plateforme | Guide de déploiement |
| Résoudre un problème local | Dépannage |
| Consulter l’évolution du projet | Changelog |
Communauté et support
| Besoin | Où aller |
|---|---|
| Signaler un bug ou proposer une idée | Issues |
| Contribuer | CONTRIBUTING.md |
| Signaler une faille de sécurité | SECURITY.md, sans passer par une issue publique |
| Signaler un comportement inacceptable | Code de conduite |
| Résoudre un problème d’installation | Dépannage |
| Suivre les changements | Changelog |
Merci à toutes les personnes qui font vivre le projet : retrouvez-les parmi les contributeurs.
Licence
Playlab42 est un projet personnel de Cyrille (@z4ppy), ouvert aux contributions. Il est distribué sous licence Apache 2.0, une licence open source approuvée par l’OSI. Vous pouvez utiliser, modifier et redistribuer le projet, y compris à titre commercial, en conservant les mentions de copyright et la notice, et en signalant vos modifications. La licence inclut une concession de brevets.
Les composants tiers (dossier vendor/, tokenizers et modèles du parcours « Anatomie d’un LLM », etc.) restent soumis à leur propre licence, indiquée dans leur dossier.
Pourquoi « 42 » ? Un clin d’œil à Douglas Adams et à la grande question sur la vie, l’univers et le reste. Ici, on commence par expérimenter.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found