de:volt LearnAuthoring Modules

Authoring Modules

The Module Creator is the no-code lesson builder in de:volt Learn. It lets teachers build a solved circuit, choose what the learner starts with, write the lesson body, and define objectives that the live circuit must satisfy.

Teacher authoring is invite-only. See Teaching for access.

Creating a module

Open Teach -> Modules -> New module. A module belongs to a school and a course. In the creation form you choose:

  • School - the organisation that owns the module.
  • Course - type an existing course name to add to it, or type a new name to create a course.
  • Module title - shown in the course library and lesson player.
  • Access - Hobby for all signed-in learners, or Pro for the Pro library.

After creation, the editor opens in a full-screen workspace.

Build the solution first

The creator stores a full solution circuit. Build the finished answer in the canvas exactly as you want the objective engine to evaluate it.

Then tag parts by role:

TagWhat learners see
GivenStays in the starter circuit as scaffold.
Learner buildsRemoved from the starter circuit; the learner must place or wire it.

Publishing derives the learner starter by stripping every Learner builds component and its incident wires from the full solution. At least one component must be tagged Learner builds, otherwise the learner would receive a circuit that already passes.

Lesson content and parts

The Content panel contains the rich-text lesson body. Students read it in the lesson player’s Lesson panel.

The same panel controls the learner palette:

  • All parts gives students the whole catalog.
  • Only selected restricts the palette to chosen categories or individual parts.

If you choose Only selected, add at least one part. An empty restricted palette is treated as a publish-readiness problem.

Objectives

Objectives are evaluated in order. Put prerequisites first because a later objective is not attempted until the earlier one has passed.

The objective editor exposes presets for common lesson outcomes:

PresetUse it for
Component is presentRequiring a part to exist anywhere in the circuit.
Two parts are in seriesChecking simple topology, such as resistor plus LED.
LED turns onVerifying current and voltage through an LED.
LED blinks at a rate555 or microcontroller blink lessons.
Voltage across a part is in a rangeDividers, rails, and threshold checks.
Current through a part is in a rangeConfirming a branch is actually conducting.

For voltage and current ranges, use a lower bound above zero. A lower bound of zero would allow an unpowered circuit to pass.

Validation and publishing

The Validation panel checks publish readiness:

  • At least one objective exists.
  • Every objective predicate is valid.
  • At least one part is marked Learner builds.
  • The full solution satisfies all static objectives after Test solution.
  • The learner parts palette is configured.

Time-domain objectives, such as blink or fade checks, cannot be re-run by the static validation harness because they depend on live sample history. The panel shows them as a notice instead of a blocking failure; drive the live solution in the canvas to confirm the behaviour before publishing.

When you click Publish module, de:volt flushes the current draft first so the published version matches what is on screen, then creates an immutable module version. The Modules list changes from Draft to Published once a current version exists.

Draft autosave

The creator autosaves the draft after edits. The header shows Unsaved changes, Saving…, or Saved. If saving fails, it stays in the unsaved state so you know the server copy has not caught up.

⚠️

Published lessons should still be test-run as a learner. Validation proves the stored objective predicates and static solution are coherent; it does not prove that the written instructions are clear or that a time-domain circuit behaves the way a learner will build it.