Work / Learning Platform / Wiki / Surfaces
dashboard
Surfacecanonicalverified 2026-10-04
SURFACE.WEB.INSTRUCTOR.DASHBOARDSummary
One course, for the people who run it.
Raw wireframe
- .context/designs/web/instructor/dashboard.html
- .context/designs/web/instructor/dashboard-empty.html
- .context/designs/web/instructor/dashboard-error.html
Why it is drawn this way
The tabs come from the route layout. InstructorCourseGuard wraps all four instructor pages and mounts the breadcrumb and tabs. It sends anyone who cannot manage the course back to the lesson with a toast.
Sync is manual. There are no webhooks. See sync-status and course-as-code.
The empty state is a course that has never synced. A draft, zero counts, and the panel explaining what Sync now does.
The error state is a failed sync. humaniseSyncError turns the raw error into a headline and a hint. The raw text sits behind Show details.
Two hints name things that do not exist. "Update the token in course settings" — there is no course settings page. "Check that course.yaml exists" — the manifest is course.json. See tasks.md T003.
Active Students wears the help icon. The code imports HelpCircle for that card.
The page has no top padding. Container is used without py-, unlike Members.
Related
Sources
- apps/website/src/components/instructor/course-dashboard.tsx
- apps/website/src/components/instructor/sync-status-panel.tsx
- apps/website/src/components/instructor/instructor-course-guard.tsx
- apps/website/src/components/instructor/course-tabs.tsx