Story 5.5: Content Review & Task System - UX Flow & Wireframes
Story: Speaker Content Submission, Quality Review & Configurable Task System
Overview
This document describes the UX integration for three major feature areas:
- Speaker Content Submission - How organizers submit speaker materials (AC6-10)
- Quality Review Queue - How moderators review and approve content (AC11-15)
- Task Dashboard - How organizers manage event planning tasks (AC19-27)
Current UI State Analysis
Existing Pages (Story 5.4 Implementation)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Organizer Dashboard β
β Route: /organizer/events β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Event Cards Grid (Left) Quick Actions (Right) β
β ββββββββββββββββββββββββ ββββββββββββββββββββββββ β
β β Event #123 β β Critical Tasks β β
β β Status: In Progress β β β’ Venue booking β β
β β Progress Bar: 45% β β β’ Speaker outreach β β
β β [View Details] β β [View All Tasks] β β
β ββββββββββββββββββββββββ ββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Event Detail (View Mode) β
β Route: /organizer/events/:eventCode β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Event Info Theme Image β
β ββββββββββββββββββββ ββββββββββββββββββββ β
β β Event #123 β β [Event Banner] β β
β β Date: 2024-12-15 β β β β
β β Venue: Kornhaus β β β β
β ββββββββββββββββββββ ββββββββββββββββββββ β
β β
β Speaker Status Dashboard β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Status Summary Cards β β
β β βββββββ βββββββ βββββββ βββββββ βββββββ β β
β β β 3 β β 5 β β 2 β β 4 β β 1 β β β
β β β ID β β CTD β β RDY β β ACC β β SLT β β β
β β βββββββ βββββββ βββββββ βββββββ βββββββ β β
β β β β
β β Speaker Status Kanban Lanes (Drag & Drop) β β
β β ββββββββ¬βββββββ¬βββββββ¬βββββββ¬βββββββ β β
β β β ID β CTD β RDY β ACC β SLT β β β
β β ββββββββΌβββββββΌβββββββΌβββββββΌβββββββ€ β β
β β β John β Mary β Bob β Lisa β Tom β β β
β β β Jane β Sue β β Mike β β β β
β β β Alex β β β Sara β β β β
β β ββββββββ΄βββββββ΄βββββββ΄βββββββ΄βββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [Edit Event Details] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Speaker Outreach Page β
β Route: /organizer/events/:eventCode/speakers/outreach β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Filters: [All Organizers βΎ] [All Statuses βΎ] β
β β
β Speaker Table β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Name β Company β Status β Assigned β Actions β β
β βββββββββββΌβββββββββββΌββββββββββΌβββββββββββΌββββββββββββ€ β
β β John D. β Tech AG β READY β Alice β [Contact] ββββββ
β β Mary S. β Dev GmbH β CONTACTEDβ Bob β [Contact] β ββ
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β Speaker Details Drawer (slides from right) βββββ
β β β β
β β John Doe - Tech AG β β
β β β β
β β Contact History Timeline: β β
β β β 2024-12-10: Initial contact (Alice) β β
β β β 2024-12-05: Status changed to READY β β
β β β β
β β [Mark as Contacted] β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Finalized UX Flow (Simplified)
Based on stakeholder feedback, the implementation uses a streamlined integrated approach:
- Content Submission & Quality Review: Single drawer with context-aware tabs (Event Detail page)
- Task Dashboard: Widget integrated into main Organizer Dashboard
- Event Task Configuration: Tab in existing EventDetailEdit modal
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Event Detail (Enhanced) β
β Route: /organizer/events/:eventCode β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Event Info + Theme Image β
β β
β Speaker Status Dashboard β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Status Summary Cards β β
β β βββββββ βββββββ βββββββ βββββββ βββββββ βββββββ βββββββ β β
β β β 3 β β 5 β β 2 β β 4 β β 2 β β 3 β β 1 β β β
β β β ID β β CTD β β RDY β β ACC β β SUB β β REV β β CNF β ββNEW β
β β βββββββ βββββββ βββββββ βββββββ βββββββ βββββββ βββββββ β β
β β β β
β β Speaker Status Kanban Lanes (Enhanced with 7 lanes) β β
β β ββββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ β β
β β β ID βCTD βRDY βACC βSUB βREV βCNF βββ NEW LANES β β
β β ββββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββ€ β β
β β βJohnβMaryβBob βLisaβTom βEve βMax β β β
β β βJaneβSue β βMikeβ βAnn β β β β
β β β β β β ββ οΈ β β βββ Changes requested β β
β β ββββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ β β
β β β β
β β SUB = Content Submitted (yellow, or red border if rejected)β β
β β REV = Quality Reviewed (light green) β β
β β CNF = Confirmed (dark green - both content + slot done) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Navigation Examples: β
β β’ Click speaker in ACCEPTED β Content Submission Drawer β
β β’ Click speaker in SUB/REV β Quality Review Drawer β
β β’ Click speaker in any lane β Details + History always available β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
A. Content Submission Drawer (Speaker Status = ACCEPTED)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Speaker Drawer (slides from right, 600px wide) β
β β
β Lisa Thompson - Tech AG β
β Event #123 | Status: ACCEPTED β
β β
β Tabs: [Details] [Content Submission β] [Contact History] β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Tab: Content Submission (Active) β
β β
β Speaker Information β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Search Speaker: [Lisa Thompson_____________] [Search] β β
β β β β
β β β Found: Lisa Thompson (lisa@techag.ch) β β
β β Company: Tech AG β β
β β Role: SPEAKER β β
β β β β
β β [Edit Speaker Profile] [Create New Speaker] β β
β β β β β
β β ββ Opens existing UserEditModal (includes portrait)β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Presentation Details β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Title: [Building Scalable Microservices_______________] β β
β β (Required) β β
β β β β
β β Abstract: (Required) β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β In this talk, I'll share lessons learned from β β β
β β β building distributed systems at Tech AG... β β β
β β β β β β
β β β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β 145/1000 characters β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [Cancel] [Submit Content] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Flow:
- Click speaker card in βACCEPTEDβ lane
- Drawer opens, βContent Submissionβ tab auto-selected
- Search/select speaker user (or create new via existing UserCreateModal)
- Fill title + abstract
- Click [Submit Content]
- Backend creates session + session_users junction
- Speaker moves to βSUBβ lane (yellow background)
- Drawer closes
B. Quality Review Drawer (Speaker Status = CONTENT_SUBMITTED)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Speaker Drawer (slides from right, 600px wide) β
β β
β Tom Brown - Dev Corp β
β Event #123 | Status: CONTENT_SUBMITTED β
β Submitted: 2 hours ago β
β β
β Tabs: [Details] [Quality Review β] [Contact History] β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Tab: Quality Review (Auto-selected for SUB status) β
β β
β Presentation Details β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Title: AI Ethics in Modern Software Development β β
β β β β
β β Abstract: β β
β β This talk explores the ethical implications of AI in β β
β β software development. Drawing from lessons learned at β β
β β Dev Corp, we'll discuss bias detection, transparency, β β
β β and responsible AI deployment strategies. β β
β β β β
β β 215 characters β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Quality Checks β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
Length OK (215/1000) β β
β β β
"Lessons learned" detected β β
β β β
No product promotion detected β β
β β β
Professional tone β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Speaker Profile Preview β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β [π· Portrait] Tom Brown β β
β β Email: tom@devcorp.com β β
β β Company: Dev Corp β β
β β Bio: AI/ML specialist with 10+ years... β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Reviewer Notes (Optional) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Internal notes visible to organizers only... β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [Request Changes] [Approve] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Request Changes Modal (if [Request Changes] clicked) β
β β
β Request Changes β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Provide feedback for the organizer: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Please expand the lessons learned section with ββ
β β specific examples. Add 1-2 concrete challenges faced ββ
β β and how they were resolved. ββ
β β ββ
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 82/2000 characters β
β β
β β οΈ Speaker will remain in "Content Submitted" status with β
β changes requested badge. Organizer will be notified. β
β β
β [Cancel] [Send Feedback] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Flow:
- Click speaker card in βSUBβ lane
- Drawer opens, βQuality Reviewβ tab auto-selected
- Reviewer sees content + auto quality checks
- Option A: Click [Approve]
- Speaker moves to βREVβ lane (light green)
- If slot also assigned β auto-moves to βCNFβ lane (dark green)
- Option B: Click [Request Changes]
- Modal opens for feedback
- Speaker stays in βSUBβ lane with red border + β οΈ badge
- Organizer receives notification
- Organizer updates content β resubmits β badge clears
Secondary Flow: Main Dashboard with Task Widget
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AppHeader Navigation (Enhanced) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β [Dashboard] [Events] [Content Review] [Tasks] [Team] ββ NEW β
β β β
β ββ New top-level nav item β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Content Review Queue β
β Route: /organizer/content-review β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Filters: [All Events βΎ] [All Statuses βΎ] [Sort: Oldest First βΎ] β
β β
β Review Queue (Kanban Style) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Pending Review (5) β In Review (2) β Approved (12) β β
β βββββββββββββββββββββββββΌββββββββββββββββββΌβββββββββββββββββββββ€ β
β β βββββββββββββββββββ β βββββββββββββββ β βββββββββββββββ β β
β β β Lisa Thompson β β β Tom Brown β β β Max Weber β β β
β β β Tech AG β β β Dev Corp β β β Code GmbH β β
β β β "Microservices" β β β "AI Ethics" β β β "Testing" β β
β β β Submitted: 2h β β β Started: 1h β β β Done: 1d β β
β β β [Review] βββββΌββΌβClick opens β β β β β β
β β βββββββββββββββββββ β β drawer ββββ β β βββββββββββββββ β β
β β β βββββββββββββββ β β β
β β βββββββββββββββββββ β β β β
β β β Eve Davis β β β β β
β β β Sys Inc β β β β β
β β β "Security" β β β β β
β β β Submitted: 5h β β β β β
β β β [Review] β β β β β
β β βββββββββββββββββββ β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Review Drawer (slides from right, 700px wide) βββ
β β β
β β Lisa Thompson - Tech AG β
β β Event #123 | Submitted: 2 hours ago β
β β β
β β Presentation Details β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β Title: Building Scalable Microservices ββ
β β β ββ
β β β Abstract: ββ
β β β In this talk, I'll share lessons learned from building ββ
β β β distributed systems at Tech AG. We'll cover service ββ
β β β discovery, fault tolerance, and deployment strategies. ββ
β β β ββ
β β β 145/1000 characters ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β
β β Quality Checks β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β β
Length OK (145/1000) ββ
β β β β
"Lessons learned" detected ββ
β β β β
No product promotion detected ββ
β β β β
Professional tone ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β
β β Speaker Profile β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β [π· Portrait] ββ
β β β Email: lisa@techag.ch ββ
β β β Bio: Expert in distributed systems... ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β
β β Moderator Notes (Optional) β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β
β β [Request Changes] [Approve] β
β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Request Changes Modal β
β β
β Provide Feedback β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Please expand on the lessons learned section. Provide ββ
β β specific examples of challenges and solutions. ββ
β β ββ
β β ββ
β β ββ
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 0/2000 characters β
β β
β [Cancel] [Send Feedback] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Navigation Flow:
- Moderator clicks βContent Reviewβ in top navigation
- Sees Kanban board with all pending reviews across all events
- Clicks [Review] button on a card
- Review drawer opens with content + quality checks
- Reviews abstract against criteria
- Either approves β moves to βApprovedβ lane
- Or requests changes β opens feedback modal β stays in βPending Reviewβ
- Organizer receives notification with feedback
- Updates abstract β resubmits β back to βPending Reviewβ
OPTION 3: Task Dashboard Integration
Concept: Content review as tasks in task dashboard
Pros:
- Unified task management
- Leverages existing task system
- Natural fit for workflow automation
- Organizers see all work in one place
Cons:
- Content review is special (needs rich preview)
- May clutter task dashboard
- Less specialized review UI
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Task Dashboard β
β Route: /organizer/tasks β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Tabs: [My Tasks] [Team Tasks] [Content Reviews] ββ NEW TAB β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Tab: Content Reviews (Active) β
β β
β Review Queue β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β To Review (5) β Reviewed (12) β β
β ββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ€ β
β β ββββββββββββββββββββ β ββββββββββββββββββββ β β
β β β Lisa Thompson β β β Max Weber β β β
β β β Event #123 β β β Event #123 β β β
β β β "Microservices" β β β "Testing" β β β
β β β Due: Today β β β β
Approved 1d β β β
β β β [Review Now] β β β β β β
β β ββββββββββββββββββββ β ββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Tab: My Tasks (Example) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β To Do (3) β In Progress (1) β Done (5) β β
β ββββββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββ€ β
β β ββββββββββββββββββββ β ββββββββββββββββ β ββββββββββββββββ β β
β β β Venue Booking β β β Newsletter β β β Partner Mtg β β β
β β β Event #123 β β β Event #123 β β β Event #122 β β β
β β β Due: Dec 20 β β β Due: Dec 18 β β β Done: Dec 10 β β β
β β β [Start] β β β [Complete] β β β β β β
β β ββββββββββββββββββββ β ββββββββββββββββ β ββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Task Dashboard Wireframes (All Options)
Regardless of content review integration, the task dashboard is needed for AC19-27.
Task Dashboard - Main View
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Task Dashboard β
β Route: /organizer/tasks β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Filters: [All Events βΎ] [All Assignees βΎ] [Sort: Due Date βΎ] β
β β
β Task Kanban Board β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β To Do (8) β In Progress (3) β Completed (15) β β
β ββββββββββββββββββββββββββΌββββββββββββββββββββΌβββββββββββββββββββ€ β
β β ββββββββββββββββββββββ β βββββββββββββββββ β βββββββββββββββββ β
β β β π’ Venue Booking β β β π§ Newsletter β β β π€ Partner ββ β
β β β Event #123 β β β Event #123 β β β Meeting ββ β
β β β Due: Dec 20 (2d) β β β Due: Dec 18! β β β Event #122 ββ β
β β β Alice Johnson β β β Bob Smith β β β β
Done 1d ββ β
β β β β β β β β β ββ β
β β β [Start Task] β β β [Complete] β β β ββ β
β β ββββββββββββββββββββββ β βββββββββββββββββ β βββββββββββββββββ β
β β β β β β
β β ββββββββββββββββββββββ β βββββββββββββββββ β βββββββββββββββββ β
β β β π€ Moderator β β β π½οΈ Catering β β β π§ Newsletterββ β
β β β Assignment β β β Event #124 β β β Event #121 ββ β
β β β Event #123 β β β Due: Dec 25 β β β β
Done 3d ββ β
β β β Due: Dec 22 (4d) β β β Carol White β β β ββ β
β β β Alice Johnson β β β β β β ββ β
β β β β β β [Complete] β β β ββ β
β β β [Start Task] β β βββββββββββββββββ β βββββββββββββββββ β
β β ββββββββββββββββββββββ β β β β
β β β β β β
β β [+ Add Custom Task] β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Legend: β
β π΄ Overdue π‘ Due in <3 days π’ On track β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Task Completion Modal (click [Complete]) β
β β
β Complete Task: Newsletter β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Event: #123 - BATbern December 2024 β
β Assigned: Bob Smith β
β Due Date: December 18, 2024 β
β β
β Completion Notes β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Newsletter sent to 250 subscribers. ββ
β β Open rate: 45% ββ
β β 12 new registrations from newsletter. ββ
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β [Cancel] [Mark Complete] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Task Templates Management
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Event Creation - Task Configuration Step β
β Route: /organizer/events/create (Step 5 of 7) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Steps: [1. Info] [2. Venue] [3. Team] [4. Timeline] [5. Tasks] ... β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Configure Event Tasks β
β β
β Select which tasks to auto-create for this event. Tasks will be β
β created automatically when the event reaches the trigger state. β
β β
β Default Templates (7) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β Venue Booking β β
β β Trigger: Topic Selection | Due: 90 days before event β β
β β Assign to: [Alice Johnson βΎ] β β
β β β β
β β β Partner Meeting Coordination β β
β β Trigger: Topic Selection | Due: Same day as event β β
β β Assign to: [Bob Smith βΎ] β β
β β β β
β β β Moderator Assignment β β
β β Trigger: Topic Selection | Due: 14 days before event β β
β β Assign to: [Alice Johnson βΎ] β β
β β β β
β β β Newsletter: Topic Announcement β β
β β Trigger: Topic Selection | Due: Immediately β β
β β Assign to: [Carol White βΎ] β β
β β β β
β β β Newsletter: Speaker Lineup β β
β β Trigger: Agenda Published | Due: 30 days before event β β
β β Assign to: [Carol White βΎ] β β
β β β β
β β β Newsletter: Final Agenda β β
β β Trigger: Agenda Finalized | Due: 14 days before event β β
β β Assign to: [Carol White βΎ] β β
β β β β
β β β Catering Coordination β β
β β Trigger: Agenda Finalized | Due: 30 days before event β β
β β Assign to: [Alice Johnson βΎ] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [+ Add Custom Task] β
β β
β [Back] [Next] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Add Custom Task Modal β
β β
β Create Custom Task Template β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Task Name: [_______________________________________] * β
β β
β Trigger State: [Topic Selection βΎ] * β
β Options: Created, Topic Selection, Speaker Brainstorming, β
β Agenda Published, Agenda Finalized, etc. β
β β
β Due Date Type: [β« Relative to Event] * β
β β Immediate β
β β Absolute Date β
β β
β Days Offset: [____] days [β« before] β after event β
β β
β Assign To: [Select Organizer βΎ] β
β β
β β Save as reusable template for future events β
β β
β [Cancel] [Add Task] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Recommended Approach: OPTION 1 (Integrated Drawer)
Why Option 1?
-
Natural Workflow Progression
- Speaker moves IDENTIFIED β CONTACTED β READY β ACCEPTED
- Natural next step: Submit content (same page, same context)
- No context switching required
-
Leverages Existing Patterns
- Already using drawers for SpeakerOutreach
- Users familiar with drawer interaction
- Consistent UX across organizer features
-
Minimal Navigation Overhead
- All speaker actions in one place
- No need to remember separate pages
- Reduces clicks from 5+ to 2
-
Visual Progress Tracking
- Kanban lanes show content submission status
- Easy to see which speakers need content
- Status badges indicate completion
-
Parallel Workflow Support
- Clear visual separation of SUB vs REV vs CNF lanes
- Easy to understand parallel progression
- Drag-drop still works for status changes
Implementation Plan
Phase 1: Extend Speaker Status Lanes
- Add 3 new lanes: CONTENT_SUBMITTED, QUALITY_REVIEWED, CONFIRMED
- Update status color mapping
- Add visual badges for parallel workflow states
Phase 2: Content Submission Drawer
- Add βContent Submissionβ tab to existing speaker drawer
- Reuse UserLookupAutocomplete component (already exists)
- Integrate portrait upload with S3 presigned URLs
- Form validation with character counter
Phase 3: Quality Review Queue (Separate Page)
- Create
/organizer/content-reviewroute (Option 2 for moderators) - Kanban board with review workflow
- Drawer with quality checks UI
- Approve/reject actions
Phase 4: Task Dashboard
- Create
/organizer/tasksroute - Kanban board for task management
- Task completion modal
- Auto-create tasks on workflow transitions
Navigation Map (Final)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AppHeader Navigation β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β [Dashboard] [Events] [Content Review] [Tasks] [Team] β
β β β β β β
β β β β ββ /organizer/tasks β
β β β ββ /organizer/content-review β
β β ββ /organizer/events β
β ββ /organizer β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
/organizer/events (EventManagementDashboard)
ββ Click Event Card
β
/organizer/events/:eventCode (EventDetail)
ββ Speaker Status Kanban Lanes (7 lanes)
β ββ Click Speaker in ACCEPTED lane
β β
β Speaker Content Drawer (tabs: Details, Content Submission, History)
β ββ Submit Content β Speaker moves to CONTENT_SUBMITTED lane
β
ββ [Edit Event Details] button
β
/organizer/events/:eventCode/edit (EventDetailEdit)
ββ 7 sections including SpeakersSessionsTable
/organizer/content-review (QualityReviewQueue)
ββ Kanban: Pending | In Review | Approved
ββ Click [Review] button
β
Review Drawer (content + quality checks)
ββ [Approve] β Speaker moves to QUALITY_REVIEWED
ββ [Request Changes] β Feedback modal β stays in CONTENT_SUBMITTED
/organizer/tasks (TaskDashboard)
ββ Kanban: To Do | In Progress | Completed
ββ Click [Start] or [Complete]
β
Task Completion Modal (notes)
/organizer/events/create (Event Creation Wizard)
ββ Step 5: Task Configuration
ββ Select default templates (7 pre-checked)
ββ [+ Add Custom Task]
β
Custom Task Modal (trigger, due date, assignee)
User Stories & Flows
Flow 1: Organizer Submits Speaker Content (AC6-10)
Actor: Alice (Organizer) Precondition: Speaker βLisa Thompsonβ has accepted invitation (status=ACCEPTED)
- Alice navigates to
/organizer/events/123 - Views Speaker Status Dashboard with Kanban lanes
- Sees Lisa in βACCEPTEDβ lane (green badge)
- Clicks Lisaβs card β Speaker Content Drawer opens
- Switches to βContent Submissionβ tab
- Searches βLisa Thompsonβ in user autocomplete β found
- Fills presentation title: βBuilding Scalable Microservicesβ
- Fills abstract: βIn this talk, Iβll share lessons learnedβ¦β (145 chars)
- Uploads portrait photo (optional)
- Clicks [Submit Content]
- Lisaβs card animates to βCONTENT_SUBMITTEDβ lane (yellow badge)
- Drawer closes, status summary updates: SUBMITTED count increases
- System creates session record + session_users junction
- SpeakerWorkflowStateChangeEvent published
Result: Lisaβs status = CONTENT_SUBMITTED, session created, ready for review
Flow 2: Moderator Reviews Content (AC11-15)
Actor: Bob (Moderator) Precondition: Lisaβs content submitted, status=CONTENT_SUBMITTED
- Bob navigates to
/organizer/content-review - Sees βPending Review (5)β column with Lisaβs card
- Clicks [Review] on Lisaβs card β Review Drawer opens
- Reviews presentation details:
- Title: βBuilding Scalable Microservicesβ
- Abstract: 145 chars
- Quality checks auto-run:
- β Length OK (145/1000)
- β βLessons learnedβ detected
- β No product promotion
- β Professional tone
- Bob approves β clicks [Approve]
- Lisaβs card moves to βApprovedβ column
- System updates speaker_pool.status = QUALITY_REVIEWED
- System checks: Does Lisa have slot assigned? (session.start_time != null)
- If YES β auto-update to CONFIRMED + session_users.is_confirmed = true
- If NO β stays in QUALITY_REVIEWED, waits for slot assignment
Result: Lisaβs content approved, status = QUALITY_REVIEWED (or CONFIRMED if slot assigned)
Flow 3: Organizer Creates Event with Tasks (AC19-27)
Actor: Carol (Organizer) Precondition: Creating new event
- Carol navigates to
/organizer/events/create - Completes Steps 1-4 (Event Info, Venue, Team, Timeline)
- Reaches Step 5: Task Configuration
- Sees 7 default templates pre-checked:
- β Venue Booking (trigger: topic_selection, due: -90d)
- β Partner Meeting (trigger: topic_selection, due: 0d)
- β Moderator Assignment (trigger: topic_selection, due: -14d)
- β Newsletter: Topic (trigger: topic_selection, due: immediate)
- β Newsletter: Speakers (trigger: agenda_published, due: -30d)
- β Newsletter: Final (trigger: agenda_finalized, due: -14d)
- β Catering (trigger: agenda_finalized, due: -30d)
- Assigns each task to team members via dropdowns
- Clicks [+ Add Custom Task] β modal opens
- Creates custom task:
- Name: βSponsor Outreachβ
- Trigger: Topic Selection
- Due: 60 days before event
- Assign: Carol
- β Save as template
- Clicks [Add Task] β task added to list
- Clicks [Next] β completes event creation
- Event transitions to TOPIC_SELECTION state
- EventTaskService listens to EventWorkflowTransitionEvent
- Auto-creates 4 tasks (venue, partner, moderator, newsletter:topic)
- Carol navigates to
/organizer/tasks - Sees βTo Do (4)β with newly created tasks
Result: Event created with 8 tasks, 4 auto-created and ready for assignment
Design System Alignment
Colors (Material-UI Theme)
Speaker Status Colors:
- IDENTIFIED: Grey 500 (#9e9e9e)
- CONTACTED: Amber 500 (#ffc107)
- READY: Orange 500 (#ff9800)
- ACCEPTED: Green 500 (#4caf50)
- CONTENT_SUBMITTED: Yellow 700 (#fbc02d) β NEW
- QUALITY_REVIEWED: Light Green 600 (#7cb342) β NEW
- CONFIRMED: Green 800 (#2e7d32) β NEW
- DECLINED: Red 500 (#f44336)
- WITHDREW: Grey 700 (#616161)
- OVERFLOW: Purple 500 (#9c27b0)
Task Priority Colors:
- Overdue: Red 600 (#e53935)
- Due <3 days: Orange 600 (#fb8c00)
- On track: Green 600 (#43a047)
Typography
- Headers: Roboto, 24px, 600 weight
- Body: Roboto, 14px, 400 weight
- Captions: Roboto, 12px, 400 weight
- Buttons: Roboto, 14px, 500 weight, uppercase
Spacing
- Card padding: 16px
- Section margin: 24px
- Drawer width: 600px (content submission), 700px (review)
- Modal max-width: 600px
UX Decisions (Finalized 2025-12-20)
1. Content Review Access Control
DECISION: Any ORGANIZER can review content (not restricted to MODERATOR role)
- Faster reviews, distributed workload
- Team can self-organize review assignments
2. Speaker Card Visual Design in New Lanes
DECISION: Same card design, different header color by status
βββββββββββββββββββ
β Lisa Thompson β β Yellow background (SUBMITTED)
β Tech AG β
β "Microservices" β β Show presentation title
β Submitted: 2h β β Relative timestamp
βββββββββββββββββββ
3. Quality Review Rejection Flow
DECISION: Stay in CONTENT_SUBMITTED with βChanges Requestedβ visual indicator
- Speaker remains in CONTENT_SUBMITTED lane
- Red border + badge: ββ οΈ Changes Requestedβ
- Organizer can see feedback in drawer
- Resubmit updates content, removes badge
4. Task Dashboard Location
DECISION: Integrate into main Organizer Dashboard (not separate page)
- Task widget on main dashboard showing critical/overdue tasks
- Quick view of all tasks across all events
- No dedicated
/organizer/taskspage needed
5. Task Creation Timing
DECISION: Create all tasks immediately at event creation
- Tasks created with status=βpendingβ until trigger state reached
- Then auto-transition to status=βtodoβ
- Organizer sees full task list upfront for planning
6. Portrait Upload Location (Additional Decision)
DECISION: Remove portrait upload from Content Submission drawer
- Portrait upload already exists in UserCreateModal/UserEditModal
- Keep Content Submission focused on presentation details only
- If organizer needs to update portrait, use βEdit Speaker Profileβ button
7. Quality Review UI Pattern (Simplified)
DECISION: No dedicated review page - use drawer from Event Detail
- Click speaker in CONTENT_SUBMITTED lane β Quality Review drawer opens
- Same drawer pattern as Content Submission, different tab
- Streamlined UX, no context switching
8. Event Task Configuration (Integration)
DECISION: Task configuration as tab in EventDetailEdit modal (not separate step)
- Existing EventDetailEdit has tabs: Info, Venue, Team, etc.
- Add new βTasksβ tab for task template selection
- Inline with existing modal pattern
FINALIZED: Task Dashboard & Event Configuration
Based on stakeholder decisions, here are the finalized wireframes for task management:
Task Widget on Main Organizer Dashboard
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Organizer Dashboard (Enhanced with Tasks Widget) β
β Route: /organizer/events β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ β
β β Event Cards (Left 70%) β β Right Sidebar (30%) β β
β β β β β β
β β βββββββββββββββββββββββββ β Critical Tasks (NEW) β β
β β β Event #123 ββ β βββββββββββββββββββββββββββββββββ β
β β β Dec 15, 2024 ββ β β π΄ Overdue (2) ββ β
β β β Progress: 45% ββ β β ββββββββββββββββββββββββββββββ β
β β β [View Details] ββ β β β Newsletter: Topic βββ β
β β βββββββββββββββββββββββββ β β β Event #122 βββ β
β β β β β β Due: Yesterday βββ β
β β βββββββββββββββββββββββββ β β β [Complete Now] βββ β
β β β Event #124 ββ β β ββββββββββββββββββββββββββββββ β
β β β Jan 20, 2025 ββ β β ββ β
β β β Progress: 12% ββ β β ββββββββββββββββββββββββββββββ β
β β β [View Details] ββ β β β Venue Booking βββ β
β β βββββββββββββββββββββββββ β β β Event #123 βββ β
β β β β β β Due: 2 days ago βββ β
β β β β β β [Complete Now] βββ β
β β β β β ββββββββββββββββββββββββββββββ β
β β β β βββββββββββββββββββββββββββββββββ β
β β β β β β
β β β β π‘ Due Soon (5) β β
β β β β βββββββββββββββββββββββββββββββββ β
β β β β β Moderator Assignment ββ β
β β β β β Event #123 | Due in 2 days ββ β
β β β β β [Start] ββ β
β β β β ββββββββββββββββββββββββββββββββ€β β
β β β β β Catering ββ β
β β β β β Event #124 | Due in 3 days ββ β
β β β β β [Start] ββ β
β β β β βββββββββββββββββββββββββββββββββ β
β β β β β β
β β β β [View All Tasks (23)] β β
β ββββββββββββββββββββββββββββ β β β
β β Team Activity β β
β β βββββββββββββββββββββββββββββββββ β
β β β Alice completed Venue ββ β
β β β Booking for Event #122 ββ β
β β β 2h ago ββ β
β β βββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Click [View All Tasks] opens expanded modal:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β All Tasks (Modal, 90% viewport width) β
β β
β Filters: [All Events βΎ] [My Tasks βΎ] [Sort: Due Date βΎ] β
β β
β Task Board (Kanban) β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Pending (8) β To Do (5) β Completed (12) ββ
β β (not yet active) β (ready to work) β (done) ββ
β ββββββββββββββββββββββΌββββββββββββββββββββΌββββββββββββββββββββ€β
β β ββββββββββββββββββ β βββββββββββββββββ β βββββββββββββββββββ
β β β π’ Venue Book β β β π§ Newsletter β β β π€ Partner βββ
β β β Event #125 β β β Event #123 β β β Meeting βββ
β β β Activates on: β β β Due: Dec 18! β β β Event #122 βββ
β β β Topic Select β β β Bob S. β β β β
Done 1d βββ
β β β (not started) β β β [Complete] β β β βββ
β β ββββββββββββββββββ β βββββββββββββββββ β βββββββββββββββββββ
β β β β ββ
β β βΉοΈ These tasks willβ β ββ
β β activate when the β β ββ
β β event reaches theirβ β ββ
β β trigger state β β ββ
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β Legend: β
β β’ Pending: Created at event setup, waiting for trigger state β
β β’ To Do: Trigger state reached, ready to work β
β β’ Completed: Task finished with notes β
β β
β [+ Add Custom Task] [Close] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Design Points:
- Tasks created at event creation have status=βpendingβ
- When event reaches trigger state, task auto-transitions to status=βtodoβ
- This gives organizers visibility into upcoming tasks without clutter
- Critical widget shows only overdue + due soon (already βtodoβ status)
Event Task Configuration (EventDetailEdit Tab)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Edit Event #123 (Modal) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Tabs: [Info] [Venue] [Team] [Timeline] [Tasks β] [Actions] β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β Tab: Tasks (Active) β
β β
β Configure Event Tasks β
β Select which tasks to auto-create for this event. Tasks will be β
β created immediately with "pending" status until trigger reached. β
β β
β Default Templates (7) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β Venue Booking β β
β β Trigger: Topic Selection | Due: 90 days before event β β
β β Assign to: [Alice Johnson βΎ] β β
β β β β
β β β Partner Meeting Coordination β β
β β Trigger: Topic Selection | Due: Same day as event β β
β β Assign to: [Bob Smith βΎ] β β
β β β β
β β β Moderator Assignment β β
β β Trigger: Topic Selection | Due: 14 days before event β β
β β Assign to: [Alice Johnson βΎ] β β
β β β β
β β β Newsletter: Topic Announcement β β
β β Trigger: Topic Selection | Due: Immediately β β
β β Assign to: [Carol White βΎ] β β
β β β β
β β β Newsletter: Speaker Lineup β β
β β Trigger: Agenda Published | Due: 30 days before event β β
β β Assign to: [Carol White βΎ] β β
β β β β
β β β Newsletter: Final Agenda β β
β β Trigger: Agenda Finalized | Due: 14 days before event β β
β β Assign to: [Carol White βΎ] β β
β β β β
β β β Catering Coordination β β
β β Trigger: Agenda Finalized | Due: 30 days before event β β
β β Assign to: [Alice Johnson βΎ] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Custom Tasks for this Event (2) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β Sponsor Outreach β β
β β Trigger: Topic Selection | Due: 60 days before event β β
β β Assign to: [Carol White βΎ] [Edit] [β] β β
β β β β
β β β AV Equipment Rental β β
β β Trigger: Agenda Finalized | Due: 7 days before event β β
β β Assign to: [Bob Smith βΎ] [Edit] [β] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [+ Add Custom Task] β
β β
β [Cancel] [Save Event] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Add Custom Task (Modal) β
β β
β Create Custom Task β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Task Name: [________________________________________] * β
β β
β Trigger State: [Topic Selection βΎ] * β
β Options: Created, Topic Selection, Speaker Brainstorming, β
β Agenda Published, Agenda Finalized, Complete β
β β
β Due Date Type: [β« Relative to Event] * β
β β Immediate (when trigger state reached) β
β β Absolute Date β
β β
β Days Offset: [____] days [β« before] β after event β
β (negative offset = before event date) β
β β
β Assign To: [Select Organizer βΎ] β
β β
β β Save as reusable template for future events β
β β
β [Cancel] [Add Task] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Integration Points:
- Tasks tab added to existing EventDetailEdit modal
- Matches existing tab pattern (Info, Venue, Team, etc.)
- All 7 default templates pre-checked
- Custom tasks can be added per-event
- Option to save custom task as reusable template
Finalized Navigation Map
/organizer/events (EventManagementDashboard)
ββ Right Sidebar: Task Widget (overdue + due soon)
β ββ [View All Tasks] β Task Board Modal (pending/todo/completed)
β
ββ Click Event Card
β
/organizer/events/:eventCode (EventDetail)
ββ Speaker Status Kanban Lanes (7 lanes: ID/CTD/RDY/ACC/SUB/REV/CNF)
β ββ Click speaker in ACCEPTED β Content Submission Drawer
β β ββ Submit β Speaker moves to SUB lane
β β
β ββ Click speaker in SUB/REV β Quality Review Drawer
β ββ [Approve] β Speaker moves to REV (or CNF if slot assigned)
β ββ [Request Changes] β Feedback modal β stays in SUB with badge
β
ββ [Edit Event Details] button
β
EventDetailEdit Modal
ββ Tabs: Info, Venue, Team, Timeline, [Tasks β], Actions
ββ Tasks Tab: Select default + custom task templates
Simplified from Original Proposal:
- β No dedicated
/organizer/content-reviewpage - β No dedicated
/organizer/taskspage - β All features integrated into existing pages/modals
- β Leverages existing patterns (drawers, modals, Kanban)
Implementation Summary
Components to Create/Modify
New Components:
ContentSubmissionDrawer.tsx- Content submission form (reuses UserLookupAutocomplete)QualityReviewDrawer.tsx- Quality review interface with auto-checksTaskWidget.tsx- Critical tasks widget for main dashboardTaskBoardModal.tsx- Expandable task Kanban boardEventTasksTab.tsx- Task configuration in EventDetailEdit modalCustomTaskModal.tsx- Add/edit custom tasks
Modified Components:
SpeakerStatusLanes.tsx- Add 3 new lanes (SUB, REV, CNF)SpeakerStatusDashboard.tsx- Update status counts for 7 lanesEventManagementDashboard.tsx- Add TaskWidget to right sidebarEventDetailEdit.tsx- Add Tasks tab to existing modal
Backend Services:
SpeakerContentSubmissionService- Handle content submissionQualityReviewService- Approve/reject workflowTaskTemplateService- CRUD for task templatesEventTaskService- Auto-create tasks, status transitions
Database:
- Migration V22: task_templates, event_tasks tables (already created)
- No changes to speaker_pool (session_id column already exists from V20)
Next Steps
- β Wireframes Finalized - Stakeholder feedback incorporated
- Begin Implementation - Phase 3-6 from story implementation plan
- Phase 3: Content Submission (ContentSubmissionDrawer + backend)
- Phase 4: Quality Review (QualityReviewDrawer + backend)
- Phase 5: Task System Backend (auto-creation, transitions)
- Phase 6: Task System Frontend (widget + modal + EventDetailEdit tab)
- Write Tests - Integration tests for all workflows
- Update OpenAPI - Document new endpoints
- Type Generation - Regenerate frontend types from OpenAPI specs
Related Files
- Story Document:
docs/stories/5.5-speaker-content-quality-review-task-system.md - Epic 5 PRD:
docs/prd/epic-5-enhanced-organizer-workflows.md - Workflow State Machines:
docs/architecture/06a-workflow-state-machines.md - Existing Components:
web-frontend/src/components/organizer/SpeakerStatus/SpeakerStatusDashboard.tsxweb-frontend/src/components/organizer/SpeakerStatus/SpeakerStatusLanes.tsxweb-frontend/src/pages/organizer/SpeakerOutreachPage.tsxweb-frontend/src/components/organizer/SpeakerOutreach/SpeakerOutreachDetailsDrawer.tsx
Document Status: β Finalized - Ready for Implementation Last Updated: 2025-12-20 Author: James (Dev Agent) Stakeholder Approval: 2025-12-20 (UX decisions incorporated)