Le projet
CapyCode est un éditeur de code pédagogique pour débutants : l'ergonomie de VS Code (explorateur, onglets, terminal, Git), dans un navigateur, sans rien installer. Il sert à apprendre Python, et aussi SQL et OCaml. Il est destiné à être intégré à Capytale, le service d'activités de programmation de l'Éducation nationale, qui l'affiche dans un cadre.
Ce que fait l'application
- Éditer plusieurs fichiers dans des onglets, sur un ou deux volets, avec coloration, complétion, recherche, formatage et analyse du code Python à la frappe.
- Exécuter un programme (bouton ▶,
Ctrl+Entrée), dialoguer avec un interpréteur (la console Python), lancerpython,pipet des commandes de fichiers dans un terminal. Les sorties graphiques (turtle, matplotlib, p5, tkinter) s'affichent dans le panneau inférieur. - S'initier à Git : indexer, commiter, créer et fusionner des branches, comparer des versions, voir le graphe, depuis l'interface ou dans le terminal.
- Garder et partager son projet : il reste dans le navigateur d'une visite à l'autre ; on l'exporte en ZIP (historique Git compris) ou on le partage par un lien.
- Fonctionner hors ligne pour l'édition, Git et les projets (PWA). L'exécution, elle, a besoin du réseau au premier chargement de Python.
Les principes qui guident le code
| Principe | Conséquence |
|---|---|
| Tout dans le navigateur | Aucun serveur applicatif : fichiers dans IndexedDB, Git en JavaScript, analyse Python en WebAssembly, exécution dans des workers. Le site est statique. |
| Le code de l'élève est isolé | Il s'exécute dans un worker d'origine opaque : il ne peut lire ni le projet, ni le dépôt, ni le stockage de la page. |
| Basthon tel quel | Les noyaux Basthon officiels sont utilisés sans surcouche ; une amélioration de l'exécution se fait dans Basthon, pas dans CapyCode. |
| Une seule source de vérité | Toute écriture passe par le système de fichiers ou le service Git, qui préviennent l'interface. Personne ne rafraîchit à la main. |
| Décrire une fois | Un langage, une commande de l'IDE, une commande du terminal sont déclarés en un seul endroit ; menus, aide, raccourcis et complétion en dérivent. |
| Accessible et traduit | RGAA 4.1.2 (WCAG 2.2 AA) visé, tout au clavier ; interface en anglais par défaut et en dix langues, sans texte écrit en dur. |
| Une base faite pour durer | Couches vérifiées par ESLint, aucun avertissement toléré, tests par domaine, documentation mise à jour dans le même commit que le code. |
Pour qui est cette documentation
Pour un développeur (ou un agent IA) qui rejoint le projet. Elle explique ce qui existe et pourquoi ; le code dit le comment. Parcours conseillé :
- Démarrer : installer, lancer, se repérer dans le dépôt.
- Visite guidée du code : suivre quatre actions de l'élève à travers le code.
- Vue d'ensemble de l'architecture, puis les pages du domaine sur lequel vous travaillez.
- Contribuer et les recettes avant votre première modification.
- Évolution pour comprendre d'où vient le projet et ce qui reste ouvert.
Les règles qui s'imposent à tous, en bref, sont dans AGENTS.md à la racine du dépôt ; un glossaire donne le vocabulaire du projet.
Les gens et les dépôts
- CapyCode : ce dépôt, sur la forge de l'Éducation nationale (GitLab), déployé par sa CI sur le serveur de Capytale.
- Basthon (
basthon-kernel) : les noyaux d'exécution, publiés sur npm (@basthon/kernel-*). CapyCode suit leurs versions ; ce qui manque à l'exécution se demande ou se fait là-bas. - Capytale : la plateforme qui intègre CapyCode et dialogue avec lui par
postMessage(voir Intégration dans une page hôte).