Today: a 3-column grid of cards, 12 per page, filtered by status tabs (Published default). Each card shows image, title, 1–2 badges, lesson count + categories, and a Manage / Settings button plus a menu. Numbers like students, ungraded work, or pending reviews are not shown, so you must open each course to know if it needs you.
Replace the card grid with a dense, sortable table. Every important number is a column, so you scan down instead of reading each card. Colored dot + short label for status. Row hover reveals actions. Checkboxes give bulk publish / archive / close enrollment.
| Course | Status | Enrollment | Students | Ungraded | Reviews | Lessons | Rating | Owner | Updated ↓ | ||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Python for Data Analysis Programming · Beginner | Published | Open | 312 | 7 | 3 | 42 | 4.8 | KNKhang | 2h ago | ⋯ | |
| SQL Fundamentals Data · Beginner | Published | Closed | 1,204 | 0 | 0 | 28 | 4.6 | LTLinh | Yesterday | ⋯ | |
| Machine Learning 101 AI · Intermediate | Published | Open | 88 | 0 | 0 | 0 | – | KNKhang | 3d ago | ⋯ | |
| React Deep Dive (copy) Web · Advanced | Draft | – | – | – | – | 31 | – | KNKhang | 41d ago | ⋯ | |
| Viettel Onboarding (licensed) From: Skill Pixel | Licensed | Open | 56 | – | – | 12 | 4.2 | VTPartner | 1w ago | ⋯ |
Columns are the course lifecycle: Draft → Published (open) → Published (closed) → Archived. Drag a card between columns to change status (with the same confirm dialogs). Cards are tiny: title, 3 numbers, and a left stripe when something needs attention. Column headers show counts so you know the shape of your catalog in one look.
A narrow, scrollable list on the left (like an email inbox) and a course workspace on the right. Selecting a course never leaves the page. The right pane has the course's own sub-nav (Content, Students, Reviews, Settings, Distribution) and a stats strip, so 80% of daily tasks happen without a full page change.
The top of the page is not the course list. It is a set of work queues generated from course data: ungraded submissions, reviews waiting, published courses with problems, stale drafts. Each item deep-links to the exact screen. Below, the catalog is grouped by status as compact rows with a 7-day enrollment sparkline.
A KPI strip for the whole catalog (or the whole tenant for admins) sits above an ultra-compact one-line list. Hover reveals inline actions; ⌘K opens a palette to jump to any course or run any action ("close enrollment on SQL Fundamentals") without touching the mouse. Clicking a row expands it inline to show chapters, latest students, and quick toggles.
What each design is best at, and what it costs.
| Design | Best for | Glanceability | Navigation | Backend needs | Risk |
|---|---|---|---|---|---|
| 1 Ledger table | Many courses, admins, bulk ops | High – all numbers in columns | Good – column deep links | Counts per course (ungraded, pending reviews); bulk endpoints | Dense on mobile; needs card fallback |
| 2 Status board | Seeing catalog shape, lifecycle work | Medium – status obvious, numbers small | Medium – peek drawer needed | None new (uses existing status endpoints) | Drag-drop = accidental status changes; weak beyond ~40 courses |
| 3 Inbox split | Daily instructor work on a few courses | High for selected course, medium for list | Best – no page changes | Per-course summary endpoint | Biggest rewrite; sub-pages must become embeddable |
| 4 Triage first | "What do I do today?" | Highest for work, medium for catalog | Best deep links | Aggregates: ungraded, pending reviews, content health, stale drafts | Empty queues look boring; needs good empty state |
| 5 Portfolio + palette | Power users, admins tracking KPIs | High | Fastest (keyboard) | KPI endpoint + counts | Palette is extra work; KPI accuracy matters |