Patterns
Organize a course and its lessons
Keep course identity, lesson order and section-specific editing in one recognizable creator context.
On this page
Workflow
| Step | Responsibility |
|---|---|
| 1 | Load the owner’s course using the existing server authorization. |
| 2 | Resolve the course sidebar destinations. |
| 3 | Edit identity and supporting sections separately. |
| 4 | Use the real sortable lesson container for ordering. |
| 5 | Save the intended course state and verify its public/private destinations. |
Decisions and composition
- Stable IDs must survive reordering.
- A source course’s closed status should not be rewritten merely to make a capture appear launched.
- Creation can reuse an existing draft, as MainNav’s creation response specifies.
Errors, recovery and limits
- Capture fixtures simulate owner access; they never create or delete a course.
- Pointer reordering requires an equivalent keyboard/non-drag review.
- A fixed flex wrapper and a responsive dropdown wrapper have different phone contracts.
Source references
| File | Responsibility |
|---|---|
| src/components/SidebarLayout.tsx | Composition |
| src/constants/sidebars.tsx | Destinations |
| src/components/SortableLesson.tsx | Ordering |
Examples from the app
Actual TeachKit UI with Thomas McGee’s course content. Session, progress and connection specimens are simulated; no student data or live changes. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-07 · Revision d8cf23d0a329 · Documentation v0.1