Architecture decisions
Lernkit captures non-obvious design decisions as Markdown ADRs (Architecture
Decision Records) following the MADR format. The
records below mirror docs/adr/ from the repo root; that directory is the
source of truth.
- 0001 — Use MADR 3.0 for architecture decisions
- 0002 — Adopt Astro 5 + Starlight + MDX + React islands as the foundation
- 0003 — Prioritize cmi5 and SCORM 1.2 with SCORM 2004 4th Ed opt-in
- 0004 — Unify tracking behind a single Tracker interface with pluggable adapters
- 0005 — Use scorm-again as the primary SCORM 1.2 / 2004 runtime wrapper
- 0006 — Run in-browser Python on Pyodide 0.29.x inside a Web Worker, self-hosted
- 0007 — Use Sandpack for browser JS demos; defer WebContainers to a paid tier
- 0008 — Execute server-side code on FastAPI + Docker with gVisor (runsc)
- 0009 — Reuse ghcr.io/manykarim/rf-mcp:latest as the Robot Framework runner base image
- 0010 — Use CodeMirror 6 as the primary in-lesson editor
- 0011 — Use Paged.js + Playwright Chromium for PDF export
- 0012 — Use Keystatic as the primary UI authoring layer; Sveltia CMS fallback; Markdoc for author-safe content
- 0013 — Use Yet Analytics SQL LRS as the self-hosted Learning Record Store
- 0014 — License the framework core and components under MIT
- 0015 — Build one static source into many standards-packaged outputs
- 0016 — Embed H5P content via h5p-standalone for long-tail interaction types
- 0017 — Test the framework itself with Robot Framework
- 0018 — Run the default self-hosted deployment on Coolify + Hetzner dedicated hardware
- 0019 — Scope cross-origin isolation headers (COOP/COEP) to the code-runner page only
- 0020 — Defer WebContainers default, Scrim, course marketplace, AI authoring, multi-tenant SaaS
- 0021 — Self-host every infrastructure dependency that is practical to self-host
- 0022 — Scope Lernkit as an OSS single-tenant framework for producing conformant course packages
- 0023 — Rename the framework from Rundown to Lernkit
- 0024 — Run non-browser Robot Framework lessons in Pyodide; keep rf-mcp for browser-automation