03 Courses

Edit a course or its lessons.

The course detail page is the everyday surface — most days you’ll be on it tweaking a lesson or watching the cohort fill up. This page covers everything below the header: the lessons block, the lesson editor, and the clone pattern.
01 Open a course

The course detail layout.

From /teacher/courses, click any course in the left sidebar. The right pane fills in. Top to bottom you’ll see:

  • Header card — title, status pill (draft / published / archived), section chip if set, plus four buttons: Author with AI, Publish, Clone, Archive, Delete.
  • Lessons block — count + ordered list with per-lesson edit/delete icons + an + Add lesson button.
  • Cohort panel — the roster (covered in 04 / Cohort overview).
  • Active enrollments — appears once at least one student has started the course; read-only here, drills into per-student progress.
02 Header actions

What each button does.

Author with AI

Opens /teacher/courses/[id]/author, a chat-only workspace where the AI proposes lessons in a structured format you can apply with one click. Covered in 09 / Author lessons with AI. Useful when the wizard scaffold isn’t quite right or you want to add lessons after the fact.

Publish

Moves the course out of draft. Covered in 10 / Publish & share.

Clone

Asks for a new title (defaults to Copy of [original]), then creates a new course with the same lessons + an empty cohort. The clone is in draft regardless of the original’s status. Use this for multiple sections of the same course — give each clone a distinct section number after creation.

Archive

Confirms, then sets status = archived. Archived courses can’t be edited (the lesson and cohort controls are disabled) and don’t accept new students. Use it at the end of a term to close a course without deleting historical data.

Delete

Confirms with the title spelled out, then permanently removes the course, lessons, cohort memberships, and any attached chat sessions. Cascades through the database — not reversible. Use Archive instead unless you’re sure.

03 Lessons block

Add, reorder, edit, delete.

The Lessons block lists every lesson in the course in order. Each row shows the lesson number, title, framework chip (P5JS, THREEJS, or GLSL), media chips, and a one-line description. Hover for the pencil and trash icons.

Add a lesson

Click + Add lesson in the block header. A modal opens with the same fields the lesson editor uses (covered in 08 / Edit a lesson). New lessons append to the end.

Edit a lesson

Click the pencil icon to open the lesson editor inline. All fields are populated with the lesson’s current values. Save commits the change.

Delete a lesson

Click the trash icon. Confirms first. Refuses to delete if any student has already worked on that lesson — the studio counts lesson_sessions rows pointing at it and shows you the count. Edit the lesson in place instead, or archive the course if it’s past its run.

Reorder

Lessons reorder via the API endpoint, but the UI for drag-and-drop reorder isn’t exposed on the lesson list yet. For now, reorder by editing the position field on individual lessons (lower numbers come first), or remove and re-add to the bottom.

04 Section number

Distinguish multiple sections.

The Section field is free-form text up to 64 characters. It shows as a small chip beside the course title throughout the studio (§001, §Fall 2026 §A, etc.). It’s purely display — no special validation.

Where it matters most: when you’re running the same course twice in parallel. Cohorts are 1:1 with courses, so the studio assumes one course = one student group. To teach two sections of the same course you clone the course and set distinct sections on each clone (e.g. §A and §B, or MWF and TR). Each clone gets its own cohort, its own roster, its own enrollments. The section chip is what reminds you which is which.

If you’re only running one section, leave the field empty.

05 Common edits

Three things you’ll do most often.

1 · Tighten an AI-proposed lesson

The wizard’s proposals are usually 80% there. The most common edit is to tighten the opening prompt (the first message students see when they enter a lesson) and add a couple of tutor notes (hidden from students, used to steer the AI tutor’s replies). Both are in the lesson editor.

2 · Lock a lesson’s media

If you don’t want a student to switch from Code to Image mid-lesson, set the lesson’s media chips to just Code. The studio enforces this server-side — a request to switch modes returns an HTTP 409 and the UI hides the disallowed mode tabs. Empty media chips means unrestricted (the student can use any tool the studio supports).

3 · Change the framework for one lesson

The course-level framework you set in the wizard is just a default. Each lesson has its own framework field. To do a single GLSL lesson inside an otherwise p5.js course, open the lesson editor for that one and switch its framework to GLSL. Doesn’t affect the others.

06 Next

Lesson editor reference.

For every field on the lesson editor and what it does at runtime, see 08 / Edit a lesson.