-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture technique
ducybrobin-ux edited this page Aug 23, 2026
·
3 revisions
JDP_BC est une PWA sans build : aucun framework, aucune dépendance npm, aucun processus de compilation. Des modules JavaScript classiques chargés par <script> partagent un scope global minimal.
index.html écran familles (SPA par sections .screen)
dashboard.html console organisateur (i18n interne fr)
editeur.html éditeur de contenu → export JSON
atelier.html atelier de création de packs (bundles jdpbc-pack)
questionnaire.html questionnaire testeurs
content/ CONTENU MODULAIRE (source de vérité pédagogique)
manifest.json packs actifs
schemas/ contrats JSON Schema draft-07 (découverte, notion, balise)
packs/biais-cognitifs/
pack.json identité du pack (nom, thème, version, ages)
decouvertes/*.json 1 fichier = 1 biais : fiche + quiz + pedagogie
guide/*.json 1 fichier = 1 notion complémentaire
balises/B*.json énigmes par niveau avec tranches d'âge
js/
data.js GÉNÉRÉ depuis content/ (région marquée) + SITE/TRAIL manuels
+ moteur : allBirds, getEnigme, makeQuiz, applyAdminData…
store.js persistance localStorage (profils, réglages, progression) — clés jdp_*
i18n.js interface française (monolingue)
audio.js Web Audio : signatures synthétiques + avertisseurs (radar/bip/pulse/custom)
compass.js boussole + indice lumineux d'approche
qr.js lecture QR (caméra) — jsqr.js — génération QR — qrcode.js
birdnet.js reconnaissance sonore en ligne (« Shazam des ambiances »)
dict.js dictée vocale (Web Speech API)
board.js réception messages/épreuves côté participants
challenges.js épreuves du tableau de bord
declination.js déclinaison magnétique (nord vrai)
app.js orchestration (écrans, énigmes, quiz, carnet, palmarès…)
tools/
build-data.mjs content/ → js/data.js + bundles/<id>.json (validation) ; --check pour la CI
import-pack.mjs installe un bundle de l'atelier dans content/packs/ (+ manifest)
split-content.mjs migration one-shot data.js → content/
server.ps1 serveur HTTPS local PowerShell (+ proxy cloudflared optionnel)
sw.js service worker : precache complet → 100 % hors-ligne
docs/ fiche pédagogique PDF + sources du wiki
-
Contenu modulaire (depuis v1.1.0) : chaque notion est un fichier JSON dans
content/packs/, avec un blocpedagogie(tranche d'âges, durée, objectif d'apprentissage, référentiel) et des énigmes déclinées par âge (facile 6-9, moyen 10-13, difficile 14+).node tools/build-data.mjsrégénère la région « contenu » dedata.jsavec validation ; la CI refuse tout désynchronisage (--check). Les packs sont activables/désactivables viacontent/manifest.json— le moteur n'affiche que ce que les packs actifs contiennent. -
Atelier de packs (depuis v1.1.1) :
/atelierpermet de créer un pack complet dans le navigateur (fiches, quiz, énigmes, pédagogie), avec validation en direct puis export d'un bundle.jdpbc.jsoninstallable viatools/import-pack.mjs. Les bundles des packs du projet sont régénérés danscontent/bundles/à chaque build. -
Identifiants historiques conservés :
BIRDS,getBird,chantdésignent désormais les découvertes/pièges — héritage du projet d'origine TSLE1, renommés uniquement dans l'interface. -
Avertisseurs d'approche :
AudioSys.startProxSound()choisit entre la signature de la découverte et l'avertisseur sélectionné (alertSound:radar,bip,pulse,custom). Le mode custom stocke un enregistrement micro (≤ 5 s) en data-URL dans les réglages, décodé enAudioBufferpuis rejoué avec vitesse/gain selon la distance. -
Hors-ligne :
PRECACHEliste tout le nécessaire (y compris le PDF pédagogique) ; caches versionnésjdpbc-*. -
Serveur :
server.ps1crée un certificat auto-signé au premier lancement et sert l'app en HTTPS ; WebSocket/long-polling léger pour le temps réel du tableau de bord.
- Tout fonctionne en local : profils, progression, photos et enregistrements restent sur les appareils / le PC du site.
- Aucun télémétrage, aucun compte en ligne. La reconnaissance sonore est le seul appel sortant optionnel.
- Les données runtime vont dans
data/(non versionnée).
- Forkez, créez une branche, modifiez (éditeur intégré
/editeurpour le contenu). - Vérifiez la syntaxe :
node --check js/*.js. - Pull request bienvenue — licence AGPL-3.0 maintenue.