Interactive Tutorial

Branching Course Editor

Learn how to build adaptive, branching learning experiences. This tutorial covers everything from basic node placement to advanced attribute-driven personalization.

~35 min total 9 sections Interactive demos included
Content Decision A Decision B Assessment End

What is the Branching Course Editor?

The Branching Course Editor is a visual, node-based authoring tool for creating adaptive learning experiences. Unlike traditional linear courses, branching courses let learners take different paths based on their choices, performance, and attributes -- creating personalized journeys through your content.

Think of it like a flowchart. Each node is a step in the learner's journey, and the connections between nodes define possible paths. Some paths are chosen by the learner (decisions), some by the system (conditions, gates), and some by chance (random, weighted).

Overview of the Workspace

The editor has three main areas:

TOOLBAR - Add nodes, undo/redo, zoom, settings Welcome Choose Path CANVAS - Drag, connect, and arrange nodes PROPERTIES PANEL Title: Welcome Type: Content Body: Click to edit... Edit selected node properties

Creating Your First Course

  1. 1
    Open the editor -- click "Open Editor" at the top of this page, or navigate to course-editor-enhanced.html.
  2. 2
    Add a Content node -- click "Add Node" in the toolbar and select "Content". This is your starting point.
  3. 3
    Edit the node -- click the node to select it. The properties panel on the right lets you set a title and body text.
  4. 4
    Add a Decision node -- this gives the learner choices. Connect the Content node's output port to the Decision node's input.
  5. 5
    Add End nodes -- every path needs to terminate. Add End nodes and connect them to your branches.

Tip: Use Ctrl+Z to undo any mistakes. The editor auto-saves to your browser, so you will not lose work.

Nodes are the fundamental units of your course. Each node represents a step, screen, or decision point that the learner encounters. There are 11 types, each serving a distinct purpose.

Content Node

Most Common

Displays information to the learner. Supports markdown formatting, images, videos, and rich layout blocks. Content nodes are the backbone of any course -- use them for lessons, introductions, explanations, and summaries.

Outputs: 1 (continues to the next node)

Special: Double-click to open the Layout Editor for rich content design

Decision Node

Branching

Presents the learner with choices that determine which path they follow. Each choice maps to a different output connection. This is the heart of branching -- it puts the learner in control.

Outputs: Multiple (one per choice option)

Example: "Do you want to learn about A) Photosynthesis or B) Cell Division?"

Choose your path Decision Node Option A Option B Photosynthesis Cell Division

Assessment Node

Evaluation

Quizzes the learner with one or more questions. Routes to a "pass" or "fail" path based on a configurable threshold. Supports four question types:

Multiple Choice

Select one correct answer from options

True / False

Binary correct/incorrect statement

Short Answer

Free text compared against accepted answers

Numeric

Number with tolerance range

Outputs: 2 (pass path and fail path)

Example Node

Demonstration

Presents worked examples with step-by-step walkthroughs. Ideal for showing how to solve a problem, demonstrating a process, or walking through a case study.

Outputs: 1 (continues to next node)

Practice Node

Remediation

Provides remediation exercises for learners who need extra practice. Commonly connected to the "fail" output of an Assessment node, offering a second chance to master the material before re-testing.

Outputs: 1 (typically routes back to assessment or forward)

Random Node

Dice Roll

Branches with equal probability across all connected outputs -- like rolling a dice. If there are 3 outputs, each has a 33.3% chance. Useful for randomizing content, creating variety, or A/B testing paths.

Outputs: Multiple (equal probability)

Weighted Node

Custom Probability

Like Random, but with custom probability weights per output. For example, you could set 60% / 25% / 15% across three branches to make one path much more likely than others.

Outputs: Multiple (custom probability weights)

Path A
60%
Path B
25%
Path C
15%

Condition Node

Logic Gate

Routes the learner based on attribute values. For example: "If knowledge >= 50, go to the advanced path; otherwise, go to the beginner path." This is how you create adaptive, personalized experiences.

Outputs: Multiple (one per condition, plus a default/else branch)

Gate Node

Prerequisite Lock

Blocks the learner's progression until a prerequisite condition is met. Unlike Condition nodes (which route silently), Gates show the learner that they are blocked and explain what they need to do to proceed.

Outputs: 1 (unlocked when condition met)

End Node

Terminal

Marks the completion of a course path. Every branch must terminate with an End node. You can have multiple End nodes for different outcomes (e.g., "Completed with distinction" vs "Completed").

Outputs: None (terminal)

Page Link Node

Navigation

Navigates between pages in multi-page courses. When a course grows large, you can organize it across multiple pages and use Page Link nodes to jump between them, keeping each page clean and focused.

Outputs: Targets a node on another page

Creating Connections

Connections are the arrows that link nodes together, defining the flow of your course. To create one:

  1. 1 Hover over a node's output port (the small circle on the right side). It will glow purple.
  2. 2 Click and drag from the output port. A line will follow your cursor.
  3. 3 Drop the line onto another node's input port (the circle on the left side). The connection is made.
Interactive Demo - Drag from the output port to the input port
Lesson Intro
Choose Path
Drag me to the purple port!

Connection Types

Default

Simple connection. Learner always follows this path. Used with Content, Example, Practice nodes.

Conditional

Labeled with a condition (e.g., "Pass", "Option A"). Used with Decision, Assessment, Condition nodes.

Weighted

Labeled with a percentage (e.g., "60%"). Used with Weighted nodes. Probabilities must sum to 100%.

Random

Equal probability, auto-labeled (e.g., "33.3%"). Used with Random nodes.

Editing and Deleting Connections

  • -- Click a connection to select it. The properties panel shows its label and type.
  • -- Edit the label in the properties panel to change what the learner sees on decision branches.
  • -- Press Delete or Backspace to remove a selected connection.
  • -- If confirmDelete is enabled in settings, you will be asked to confirm before deletion.

What Are Attributes?

Attributes are numeric variables that track the learner's state throughout the course. Think of them as RPG-style stats: knowledge, confidence, skill level, or any custom metric you define. They change as the learner progresses and can influence which paths are available.

Learner Attributes (Example)

Knowledge 35
Confidence 60
Engagement 80

Defining Attributes

In the editor's settings, you define attributes with:

Name

Unique identifier, e.g., "knowledge"

Default Value

Starting value, e.g., 0

Minimum

Floor value (cannot go below), e.g., 0

Maximum

Ceiling value (cannot exceed), e.g., 100

Attribute Effects on Nodes

Each node can modify attributes when the learner visits it. Effects can be:

  • + Delta values: Add or subtract from an attribute. E.g., knowledge +10
  • ? Conditional effects: Only apply if a condition is met. E.g., "If confidence > 50, knowledge +15; otherwise knowledge +5"

Using Attributes in Conditions and Gates

Condition nodes evaluate attribute expressions to route learners. Gate nodes block until an expression is true. Supported operators: >= <= == != > <

Tip: Combine attributes creatively. A "mastery" attribute could combine quiz scores with practice completion, creating nuanced routing that reflects true understanding.

Opening the Layout Editor

Double-click any Content node to open its Layout Editor. This gives you a WYSIWYG canvas for designing rich, structured content with drag-and-drop blocks.

Block Types

H
Heading

Section titles. Supports H1-H4 levels.

T
Text

Paragraphs with markdown support.

!
Callout

Highlighted tip/warning/info boxes.

Image

Embed images with captions and alt text.

Video

Embed video players (URL-based).

{}
Code

Syntax-highlighted code blocks.

Columns

Side-by-side content layout (2-4 cols).

---
Divider

Visual separator between content sections.

?
Quiz Question

Inline quiz embedded in content.

Nav Button

Navigation button to proceed or branch.

Templates

The Layout Editor includes pre-built templates to speed up content creation:

Lesson Intro

Heading + text + callout. Great starting template for new topics.

Media + Text

Two-column layout with image/video on one side, text on the other.

Quiz Section

Heading + quiz question + nav button. Ready-made assessment layout.

Two Columns

Side-by-side content blocks for comparisons or parallel information.

Canvas Width Presets

Control the content width to match your target device: narrow (mobile), medium (tablet), or wide (desktop). This affects how blocks reflow and stack.

Exporting Your Course

Click the Export button in the toolbar. You can export as:

JSON

Standard format. Use prettyJson setting for human-readable output, or compact for smaller file size.

YAML

More readable for hand-editing. Ideal for version control and collaborative authoring.

Importing Courses

Click Import in the toolbar and select a .json or .yaml file. The editor will parse it and load all nodes, connections, attributes, and settings.

Warning: Importing replaces your current course. Export first if you have unsaved work.

The Course File Structure

Courses are saved as portable single-file documents containing everything:

// Simplified course structure
{
  "meta": {
    "title": "My Branching Course",
    "version": "1.0",
    "created": "2026-03-28"
  },
  "attributes": [
    { "name": "knowledge", "default": 0, "min": 0, "max": 100 }
  ],
  "pages": [
    {
      "id": "page-1",
      "nodes": [ ... ],
      "connections": [ ... ]
    }
  ],
  "settings": { ... }
}

Auto-Save

The editor automatically saves your work to the browser's localStorage as you edit. This means you can close the tab and return later without losing progress. For permanent storage, always export to a file.

The canvas is your infinite workspace. Here is how to navigate it efficiently:

Space+ Drag

Pan

Hold the spacebar and drag to move around the canvas. Release spacebar to return to selection mode.

Scroll Wheel

Zoom

Scroll up to zoom in, scroll down to zoom out. Zooms toward your cursor position.

F

Fit All

Zooms and pans to show all nodes on screen. Also available as a toolbar button.

A

Auto-Arrange

Automatically organizes nodes in a clean, left-to-right flow layout. Respects connection hierarchy.

G

Grid Snapping

Toggle grid snapping. When enabled, nodes align to a grid for cleaner layouts.

Keyboard shortcuts summary: Ctrl+Z Undo | Ctrl+Shift+Z Redo | Delete Remove selected | Ctrl+A Select all

Open the settings panel via the gear icon in the toolbar. Each toggle customizes the editor experience:

selectOnAdd

Automatically select and open properties for newly added nodes. Speeds up the authoring workflow.

confirmDelete

Show a confirmation dialog before deleting nodes or connections. Prevents accidental deletions.

showNodeIds

Display internal node IDs on the canvas. Useful for debugging and referencing specific nodes.

propsOnSelect

Automatically open the properties panel when a node is selected.

autoFit

Automatically fit the view to show all nodes after adding or arranging. Can be distracting on large courses.

prettyJson

Export JSON with indentation for readability. Disable for smaller file sizes.

exportMeta

Include metadata (title, author, timestamps) in exported files.

nodeRepulsion

Nodes push each other apart during auto-arrange to prevent overlap.

linkedDrag

When dragging a node, connected nodes move with it to maintain relative positions.

downstreamDrag

When dragging a node, only its downstream (child) nodes follow. Useful for repositioning entire sub-trees.

General Tips

Start with a flow diagram on paper

Sketch your course structure before building. Identify key decision points, assessment checkpoints, and desired outcomes. This prevents rework later.

Use meaningful node titles

Instead of "Node 1", use "Intro to Photosynthesis" or "Quiz: Cell Structure". This makes the canvas readable at a glance and helps collaborators understand your design.

Test in the player frequently

Do not wait until the course is "done" to preview it. Test early and often. Walk through each branch to ensure connections work and content flows naturally.

Use attributes to create personalized experiences

Even simple attributes like "knowledge" and "confidence" can dramatically improve the learning experience by adapting difficulty and content to each learner.

Common Course Patterns

Linear

Simple start-to-finish path. Content flows in one direction without branches. Good for tutorials and guided walkthroughs.

Start Lesson Quiz End

Branching

Learner chooses a path. Each branch has different content. Paths may reconverge later.

Choose Path A Path B End Merge

Assessment + Remediation

Quiz with a retry loop. Failing routes to practice, then back to the quiz for another attempt.

Lesson Quiz Pass Fail End Practice Retry

Gated Progression

Content is locked behind prerequisite gates. Learners must build attributes before advancing to harder material.

Basics Gate k>=30 Advanced End

Pro tip: Combine patterns! A real course might use linear sections for lessons, branching for learner choice, assessment loops for mastery, and gates for progression. The power is in composition.