v2 Admin Spec — Content

Content

Domain 4 of the Enhanced Candidate A navigation structure. Contains: Video Lessons, Resources, Recordings, Tutorials, MCQ Questions, Quizzes. All 6 screens are existing screens relocated from the Program section. No new screens in this domain. Key change: Integration with Semester Hub > Setup Checklist (deep links with semester pre-filtering, "Return to Checklist" affordance)


1. Domain Overview

Content groups all passive learning materials that students consume. These screens were previously under "Program" alongside submissions and live sessions. In Enhanced Candidate A, submissions moved to Student Management (student activity) and live sessions moved to Scheduling (time-based events), leaving Content as a clean domain for curriculum materials.

Sidebar items:

Content
  Video Lessons                    <- from Program
  Resources                        <- from Program
  Recordings                       <- from Program
  Tutorials                        <- from Program
  MCQ Questions                    <- from Program
  Quizzes                          <- from Program

Key enhancement: All 6 content screens now support semester pre-filtering when accessed from the Setup Checklist. When the admin clicks "Configure -->" on a checklist item, the content screen opens pre-filtered to the relevant semester and level, with a "Return to Setup Checklist" banner at the top (see 01-global-patterns.md Section 4.2 for filter bar pattern; 04-semester-management.md Section 3.6 for the full Setup Checklist specification including deep link mechanics and return affordance).

What this spec covers: Because all 6 screens already exist and their core CRUD behavior is unchanged, this spec focuses on what changed -- new location, Setup Checklist integration, v2 field/action refinements, and role visibility adjustments. It does not repeat full field-by-field breakdowns of existing forms and tables except where v2 refinements add new structure.

Data tables referenced: lessonsnew, resources, recordings, tutorials, mcqquestion, quiz

Transition Hint

Per 01-global-patterns.md Section 6.4, all 6 content screens show "Formerly under Program" for the first 30 days after launch.


2. Screen: Video Lessons

2.1 Purpose

Manage video curriculum. Core content type -- the primary learning material students interact with. Relocated from Program > Video Lessons.

2.2 Entry Points

2.3 Layout

Filter bar + data table + pagination. Uses standard patterns from 01-global-patterns.md Sections 4.1 and 4.2.

2.4 Key Changes from Current

2.5 Existing Capabilities (preserved)

2.6 Actions

All existing CRUD actions preserved. No new actions. Admin only for create/edit/delete.

Action Trigger Permission Behavior Confirmation
Create Lesson "Add Video Lesson" button Admin Opens create dialog (see 2.8) Toast on save
Edit Lesson Row action / row click Admin Opens edit dialog (same form as create, pre-filled) Toast on save
Delete Lesson Row action Admin Removes lesson + all attached videos Confirm modal
Bulk Delete Selection + toolbar action Admin Removes selected lessons Confirm modal with count
Clone from Previous Header button (per semester) Admin Copies all lessons from prior semester (same level set) into current semester Confirm modal listing count

2.7 Role Visibility

2.8 Create / Edit Lesson Dialog (v2)

Form fields (in order):

Field Type Required Notes
Title Text Yes Lesson title (e.g., "Week 3 — Nouns and Pronouns")
Week Number Number Yes Integer, used for ordering
Semester Select Yes Single-select; pre-filled when from Setup Checklist
Level Select Yes Single-select; pre-filled when from Setup Checklist
Description Textarea No Free-form description of the lesson content
Videos Multi-video input (see below) Yes (>=1) Repeater for individual video entries

Multi-video input UI (new in v2):


3. Screen: Resources

3.1 Purpose

Manage downloadable materials (PDFs, documents), external links, and video URLs per level. Relocated from Program > Resources.

3.2 Entry Points

3.3 Layout

Filter bar + data table + pagination. Standard patterns.

3.4 Key Changes from Current

3.5 Existing Capabilities (preserved)

3.6 Actions

All existing CRUD actions preserved. Admin only for create/edit/delete.

Action Trigger Permission Behavior Confirmation
Create Resource "Add Resource" button Admin Opens create dialog (see 3.8) Toast on save
Edit Resource Row action / row click Admin Opens edit dialog (pre-filled) Toast on save
Delete Resource Row action Admin Removes resource (and file if File type) Confirm modal
Bulk Delete Selection + toolbar action Admin Removes selected resources Confirm modal with count

3.7 Role Visibility

3.8 Create / Edit Resource Dialog (v2)

Form fields (in order):

Field Type Required Notes
Title Text Yes Display name for the resource
Semester Select Yes Single-select; pre-filled when from Setup Checklist
Levels Multi-select Yes (>=1) Multiple levels may be selected; resource appears for all selected levels
Resource Type Select Yes One of: File, Link, Video URL
File File upload Conditional Required when Resource Type = File
URL Text (URL) Conditional Required when Resource Type = Link or Video URL
Description Textarea No Optional context shown to students

Data table columns reflect the new fields:

Column Source Sortable Notes
Title resources.title Yes
Type resources.resource_type Yes Badge: File / Link / Video URL
File Type / URL Derived No File extension (PDF/DOC) for File; domain for Link/Video URL
Levels resources.levels[] No Comma-separated list of level tags
Size resources.size Yes Shown only for File type; blank otherwise
Created resources.created_at Yes

4. Screen: Recordings

4.1 Purpose

Store recorded live session replays for students who missed sessions. Relocated from Program > Recordings.

4.2 Entry Points

4.3 Layout

Filter bar + data table + pagination. Standard patterns.

Filters (in addition to standard semester/level/search):

4.4 Key Changes from Current

4.5 Existing Capabilities (preserved)

4.6 Data Table Columns (v2)

Column Source Sortable Notes
Title recordings.title Yes Class name / session title
Type recordings.type Yes Badge: Lesson Class or QRC
Week recordings.week_number Yes Integer
Level recordings.level_tag_id Yes Level tag name
Gender recordings.gender No Male / Female / Mixed (populated by auto-tag or manual)
Session Date recordings.session_date Yes Date of the live session
Time of Day recordings.session_time Yes Time in EST (e.g., 7:00 PM)
Host (TA) recordings.ta_idteacher.name Yes
Zoom Sync Status recordings.sync_status Yes Badge: Synced, Pending Review, Manual. See 4.8
Created recordings.created_at Yes

4.7 Actions

All existing CRUD actions preserved. Admin only for create/edit/delete. Plus new Zoom-related actions.

Action Trigger Permission Behavior Confirmation
Create Recording "Add Recording" button Admin Opens create dialog (manual entry) Toast on save
Edit Recording Row action / row click Admin Opens edit dialog Toast on save
Delete Recording Row action Admin Removes recording Confirm modal
Approve Auto-Tag Row action (when status = Pending Review) Admin Accepts the auto-tagged level/gender; status moves to Synced Toast
Override Auto-Tag Row action (when status = Pending Review or Synced) Admin Opens edit dialog to manually correct level/gender; status moves to Manual on save Toast
Resync from Zoom Header button Admin Triggers on-demand Zoom fetch for the current semester Confirm modal

4.8 Zoom Auto-Upload + Auto-Tag Affordance (v2) [backend]

Backend behavior (spec'd here for UI context; implementation lives in the backend):

UI affordances:

  1. Sync status badge on every row (column per 4.6). Status values and colors follow 01-global-patterns.md §4.3:
    • Synced — success
    • Pending Review — warning
    • Manual — neutral
  2. Filter by sync status on the filter bar (4.3).
  3. Pending Review count shown as a header stat (e.g., "3 recordings pending review") when > 0.
  4. Row actions for approval/override per 4.7 (Approve Auto-Tag, Override Auto-Tag).
  5. Manual override via edit dialog preserves admin-set fields; subsequent Zoom re-syncs do not overwrite a Manual record.
  6. Resync from Zoom header button for on-demand refresh (per 4.7).

4.9 Role Visibility


5. Screen: Tutorials

5.1 Purpose

Manage supplementary PDF-based learning materials. Relocated from Program > Tutorials.

5.2 Entry Points

5.3 Layout

Filter bar + data table + pagination. Standard patterns.

5.4 Key Changes from Current

5.5 Existing Capabilities (preserved)

5.6 Actions

All existing CRUD actions preserved. Admin only for create/edit/delete.

5.7 Role Visibility


6. Screen: MCQ Questions

6.1 Purpose

Build the question bank for quizzes. Individual multiple-choice questions that are assembled into quizzes (Section 7). Relocated from Program > MCQ Questions.

6.2 Entry Points

6.3 Layout

Filter bar + data table + pagination. Standard patterns.

6.4 Key Changes from Current

6.5 Existing Capabilities (preserved)

6.6 Actions

All existing CRUD actions preserved. Admin only for create/edit/delete.

6.7 Role Visibility


7. Screen: Quizzes

7.1 Purpose

Create assessments from the MCQ question bank (Section 6). Relocated from Program > Quizzes.

7.2 Entry Points

7.3 Layout

Filter bar + data table + pagination. Standard patterns.

7.4 Key Changes from Current

7.5 Existing Capabilities (preserved)

7.6 Actions

All existing CRUD actions preserved. Admin only for create/edit/delete.

7.7 Role Visibility


8. Setup Checklist Integration (Cross-Domain Pattern)

All 6 content screens share this integration pattern with the Semester Hub > Setup Checklist (fully specified in 04-semester-management.md Section 3.6). Summarized here for implementer reference.

8.1 Deep Link

Checklist item "Configure -->" navigates to the content screen with URL parameters:

/content/video-lessons?semester={id}&level={id}&from=checklist

8.2 Pre-Filtering

Semester and level dropdown filters auto-populate from URL parameters on page load. The admin can change the filters after landing -- this does not affect the return behavior.

8.3 Return Banner

When from=checklist is present in the URL, a persistent banner appears at the top of the content screen:

<-- Return to Setup Checklist for [Semester Name]

8.4 Return Behavior

Clicking the banner navigates back to Semester Hub > Setup Checklist tab with scroll position preserved (scroll position stored in session state before navigation). If the admin navigates away via sidebar or breadcrumb instead, the banner context is discarded.

8.5 Checklist Status Update

After content is saved on any content screen, the corresponding checklist item status auto-updates on the next visit to the Setup Checklist tab. Status is computed dynamically by querying actual content counts (e.g., count of lessonsnew where semester_id and level_tag_id match), not stored as a separate flag.

8.6 Which Screens Support Level Pre-Filtering

Screen Semester Filter Level Filter Reason
Video Lessons Yes Yes Content is level-scoped
Resources Yes Yes (multi) Content is level-scoped; v2 supports multi-level per resource
Recordings Yes No Recordings are not level-scoped in the checklist
Tutorials Yes Yes Content is level-scoped
MCQ Questions Yes Yes Content is level-scoped
Quizzes Yes Yes Content is level-scoped

9. Cross-Domain References

From To Mechanism
Semester Hub > Setup Checklist All 6 Content screens "Configure -->" deep links with ?semester={id}&level={id}&from=checklist
All 6 Content screens Semester Hub > Setup Checklist "Return to Setup Checklist" banner (when ?from=checklist present)
Dashboard Content screens (indirect) Phase prompt --> Semester Hub > Setup Checklist --> Content deep links
TA sidebar Content > Recordings Direct sidebar link (TA view only)
Zoom (external) Content > Recordings Backend-only auto-upload + auto-tag pipeline; surfaces in UI via sync status badge and Pending Review queue (see §4.8) [backend]