@mostajs/course-builder
v0.1.0
Published
Éditeur de formation (domaine headless) : arbre Formation/Activity (10 kinds), dépendances DAG + détection de cycle, validation par kind, snapshots versionnés. DÉCOUPLÉ du média (mediaRef opaque). Extraction iquesta.
Downloads
164
Maintainers
Readme
@mostajs/course-builder
Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later · Statut : 0.1.0 (6 tests verts)
Éditeur de formation (domaine headless) : arbre, dépendances DAG + détection de cycle, validation par kind, snapshots versionnés. Découplé du média (
mediaRefFK opaque) — intégration média = composition (docs/12-DOC-MEDIA-INTEGRATION.md).
import { createCourseBuilder, createMemoryRepositories } from '@mostajs/course-builder';
const cb = createCourseBuilder({ repositories: createMemoryRepositories(), hasher });
const f = await cb.formations.create({ title:'Anglais A1' });
const v = await cb.activities.add(f.id, { kind:'video', title:'Hello', mediaRef:'MEDIA-ID' }); // FK opaque → @mostajs/media
await cb.deps.add(f.id, quizId, v.id); // throw CycleDetected si cycle
const snap = await cb.snapshots.create(f.id, { label:'v1.0' });Lancer : node test-scripts/unit/course-builder.test.mjs && node examples/cours/run.mjs
