Story 3.3: Content Library/Repository Screen - Wireframe
Story: Epic 3, Story 3.3 - Speaker Material Submission / Epic 5, Story 5.1 - Content Discovery
Visual Wireframe
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ Back to Dashboard Content Library [+ Upload Content] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโ SEARCH & FILTERS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ [๐ Search titles, speakers, topics...] [Advanced Search] โ โ
โ โ โ โ
โ โ Content Type: [All โพ] Event: [All โพ] Speaker: [All โพ] Status: [All โพ] โ โ
โ โ Year: [All โพ] Tags: [________] Sort: [Recent โพ] [Clear Filters]โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ BULK ACTIONS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ Select All (5 selected) [Download Selected] [Tag] [Archive] [Delete] โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ LIBRARY STATISTICS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Total: 1,247 files | Presentations: 892 | Videos: 156 | Docs: 199 | Storage: โ โ
โ โ 45.3 GB / 200 GB โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ CONTENT LIST โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Showing 247 items [Grid โฃ] [List โฐ] โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ [โ] ๐ Presentation โญ Featured ๐ฅ Popular โ โ โ
โ โ โ โ โ โ
โ โ โ [Thumbnail] Kubernetes Best Practices for Production โ โ โ
โ โ โ Dr. Peter Mรผller โข TechCorp AG โ โ โ
โ โ โ โ โ โ
โ โ โ Event: Spring Conference 2024 โ โ โ
โ โ โ Type: Presentation (PDF, 15.2 MB) โข Version 2 of 2 โ โ โ
โ โ โ Tags: [Kubernetes] [DevOps] [Cloud Native] [Production] โ โ โ
โ โ โ โ โ โ
โ โ โ ๐ Stats: 1,247 views โข 523 downloads โข 4.8โ
(45 reviews) โ โ โ
โ โ โ ๐
Uploaded: Mar 15, 2024 โข Modified: Mar 18, 2024 โข Status: Published โ โ โ
โ โ โ โ โ โ
โ โ โ [View] [Download] [Edit Metadata] [Version History] [Analytics] [โฎ More] โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ [โ] ๐ฅ Video Recording ๐น Recording โ โ โ
โ โ โ โ โ โ
โ โ โ [Thumbnail] Container Security Deep Dive โ โ โ
โ โ โ Sarah Kรถnig โข SwissBank Ltd โ โ โ
โ โ โ โ โ โ
โ โ โ Event: Autumn Conference 2023 โ โ โ
โ โ โ Type: Video (MP4, 342 MB, 45:32) โข Version 1 of 1 โ โ โ
โ โ โ Tags: [Security] [Docker] [Containers] [CI/CD] โ โ โ
โ โ โ โ โ โ
โ โ โ ๐ Stats: 2,103 views โข 891 downloads โข 4.9โ
(67 reviews) โ โ โ
โ โ โ ๐
Uploaded: Oct 20, 2023 โข Modified: Oct 20, 2023 โข Status: Published โ โ โ
โ โ โ โ โ โ
โ โ โ [View] [Download] [Edit Metadata] [Version History] [Analytics] [โฎ More] โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ [โ] ๐ Handout โณ Under Review โ โ โ
โ โ โ โ โ โ
โ โ โ [Thumbnail] Platform Engineering Workshop Materials โ โ โ
โ โ โ Michael Weber โข Digital Solutions GmbH โ โ โ
โ โ โ โ โ โ
โ โ โ Event: Spring Conference 2025 (Upcoming) โ โ โ
โ โ โ Type: Document (PDF, 3.8 MB) โข Version 1 of 1 โ โ โ
โ โ โ Tags: [Platform Engineering] [Workshop] [Hands-on] โ โ โ
โ โ โ โ โ โ
โ โ โ ๐ Stats: Not yet published โ โ โ
โ โ โ ๐
Uploaded: Jan 15, 2025 โข Modified: Jan 18, 2025 โข Status: Under Review โ โ โ
โ โ โ โ โ โ
โ โ โ [View] [Download] [Edit Metadata] [Approve] [Reject] [โฎ More] โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ [Load More...] (244 more items) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
List View (Compact Layout)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโโโ CONTENT LIST (Compact) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ โ | Type | Title | Speaker | Event | Size | โฆ โ โ
โ โ โโโผโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโผโโโ โ
โ โ โ โ ๐ โ Kubernetes Best Practices... โ Dr. P. Mรผller โ Spr 2024 โ 15 MB โ โฆ โ โ
โ โ โ โ 1,247 views โข 523 downloads โ TechCorp AG โ โ โ โ โ
โ โ โโโผโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโผโโโ โ
โ โ โ โ ๐ฅ โ Container Security Deep Dive โ S. Kรถnig โ Aut 2023 โ 342MB โ โฆ โ โ
โ โ โ โ 2,103 views โข 891 downloads โ SwissBank Ltd โ โ โ โ โ
โ โ โโโผโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโผโโโ โ
โ โ โ โ ๐ โ Platform Engineering Workshop โ M. Weber โ Spr 2025 โ 3.8MB โ โฆ โ โ
โ โ โ โ Under Review โ Digital Sol. โ โ โ โ โ
โ โ โโโผโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโผโโโ โ
โ โ โ โ
โ โ [Load More...] (244 more items) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Version History Modal
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [X] Version History - Kubernetes Best Practices for Production โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโ VERSION TIMELINE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Version 2 (Current) โข Mar 18, 2024 15:30 โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Updated by: Dr. Peter Mรผller โ โ โ
โ โ โ File: kubernetes-best-practices-v2.pdf (15.2 MB) โ โ โ
โ โ โ Changes: Added cost optimization section, updated security examples โ โ โ
โ โ โ Status: Published โ โ โ
โ โ โ โ โ โ
โ โ โ [View] [Download] [Compare with v1] [Revert to this version] โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ Version 1 โข Mar 15, 2024 10:45 โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Uploaded by: Dr. Peter Mรผller โ โ โ
โ โ โ File: kubernetes-best-practices-v1.pdf (14.8 MB) โ โ โ
โ โ โ Changes: Initial upload โ โ โ
โ โ โ Status: Archived (replaced by v2) โ โ โ
โ โ โ โ โ โ
โ โ โ [View] [Download] [Compare with v2] โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ [Close] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Analytics Modal
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [X] Content Analytics - Kubernetes Best Practices for Production โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโ USAGE OVERVIEW โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Last 30 Days โ โ
โ โ โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ ๐๏ธ Views โ โฌ Downloads โ โญ Rating โ ๐ฌ Reviews โ โ โ
โ โ โ 342 โ 156 โ 4.8/5.0 โ 12 โ โ โ
โ โ โ +15% vs prev โ +23% vs prev โ (45 total) โ +3 this month โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ TRAFFIC CHART โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Views & Downloads Over Time โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Views โโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โ 400 โ โ โ โ
โ โ โ โ Downloads โผโโโโผโโโโผโโโโผโโโโผ โ โ โ
โ โ โ 200 โ โ โ โ
โ โ โ โ โ โ โ
โ โ โ 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โ Mar 18 Mar 25 Apr 1 Apr 8 Apr 15 Today โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ AUDIENCE INSIGHTS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Top Viewer Companies: Viewer Roles: โ โ
โ โ 1. UBS AG (45 views) โข DevOps Engineers: 42% โ โ
โ โ 2. Credit Suisse (32 views) โข Architects: 28% โ โ
โ โ 3. Swiss Re (28 views) โข Developers: 18% โ โ
โ โ 4. PostFinance (21 views) โข Managers: 12% โ โ
โ โ 5. Raiffeisen (18 views) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ REVIEWS & FEEDBACK โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Recent Reviews: โ โ
โ โ โญโญโญโญโญ "Excellent practical insights!" - Thomas K., SwissBank (Apr 12) โ โ
โ โ โญโญโญโญโญ "Best Kubernetes talk I've attended" - Anna M., TechCorp (Apr 8) โ โ
โ โ โญโญโญโญโ "Great content, could use more demos" - Peter S., UBS (Apr 5) โ โ
โ โ โ โ
โ โ [View All Reviews (45) โ] โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ [Export Report (PDF)] [Close] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Key Interactive Elements
Search & Filter Section
- Search Bar: Real-time search across titles, speakers, descriptions, tags
- Advanced Search: Opens modal with additional search criteria
- Content Type Filter: Presentation, Video, Document, Handout
- Event Filter: Filter by specific event or all events
- Speaker Filter: Autocomplete speaker search
- Status Filter: Published, Under Review, Draft, Archived
- Year Filter: Historical content by year (20+ years)
- Tags Input: Multi-tag filtering
- Sort Dropdown: Recent, Popular, Most Downloaded, Rating, Alphabetical
- Clear Filters: Reset all filters to default
Bulk Actions Bar
- Select All Checkbox: Select/deselect all visible items
- Selection Counter: Shows number of selected items
- Download Selected: Batch download as ZIP
- Tag Button: Bulk tag management
- Archive Button: Move selected to archive
- Delete Button: Bulk delete with confirmation
Library Statistics
- Total Files: Count of all content items
- By Type: Breakdown by content type
- Storage Usage: Used/total storage with visual progress bar
Content Cards (Grid View)
- Checkbox: Bulk selection
- Content Type Icon: Visual indicator (๐ presentation, ๐ฅ video, ๐ document)
- Status Badges: Featured, Popular, Under Review, New
- Thumbnail: Preview image
- Title & Speaker: Content title with speaker name and company
- Event Info: Associated event name and date
- File Details: Type, size, version number
- Tags: Clickable tags for filtering
- Statistics: Views, downloads, rating with review count
- Timestamps: Upload and modification dates
- Status: Published, Under Review, Draft, Archived
- Action Buttons: View, Download, Edit Metadata, Version History, Analytics, More menu
List View (Compact)
- Table Layout: Compact rows for efficient scanning
- Sortable Columns: Click column headers to sort
- Inline Stats: Key metrics in condensed format
- Quick Actions: Hover for action menu
Version History
- Timeline View: Chronological list of all versions
- Version Cards: Details for each version
- Compare Versions: Side-by-side comparison
- Revert Option: Restore previous version
- Change Notes: Description of what changed
Analytics Dashboard
- Usage Overview: Key metrics (views, downloads, rating)
- Traffic Chart: Visual representation over time
- Audience Insights: Viewer companies and roles
- Reviews Section: Recent reviews with ratings
- Export: Download analytics report as PDF
Functional Requirements Met
- FR3: Speaker self-service material management with version control
- FR18: Historical archive access across 20+ years of content
- Content Organization: Search, filter, and organize all content types
- Version Management: Track and manage content versions
- Usage Analytics: Monitor content performance and engagement
- Bulk Operations: Efficient management of multiple items
- Role-Based Access: Organizers manage all, speakers manage own content
User Interactions
For Organizers (Full Access)
- Browse All Content: View complete content library across all events
- Advanced Search: Use powerful search with multiple criteria
- Filter Content: Apply multiple filters to find specific content
- Sort Results: Order by various criteria (recent, popular, rating)
- Bulk Select: Select multiple items for batch operations
- Bulk Download: Download selected content as ZIP archive
- Bulk Tag: Add/remove tags from multiple items
- Bulk Archive: Move multiple items to archive
- Bulk Delete: Delete multiple items with confirmation
- View Content: Preview content in viewer
- Download Content: Download individual files
- Edit Metadata: Update titles, descriptions, tags
- Manage Versions: View version history, compare, revert
- View Analytics: Detailed usage statistics and insights
- Approve Content: Review and approve submitted materials
- Reject Content: Reject with feedback for revision
- Feature Content: Mark content as featured
- Archive Content: Move to archive while preserving history
- Delete Content: Permanently delete with confirmation
- Upload Content: Add new content to library
For Speakers (Own Content Only)
- View My Content: Filter to show only own submissions
- Upload Materials: Submit presentations and materials
- Edit Own Metadata: Update titles, descriptions for own content
- Version Control: Upload new versions of own presentations
- View Own Analytics: See performance of own content
- Draft Management: Save drafts before submission
- Submit for Review: Submit materials to moderator queue
For Attendees (Read-Only)
- Search Content: Search across all published content
- Filter & Browse: Use filters to discover content
- View Content: Preview presentations and materials
- Download Content: Download available materials
- Rate & Review: Provide feedback on content
- Save Favorites: Bookmark content for later
Common Interactions
- Quick Filters: Apply predefined filter combinations
- Tag Click: Filter by clicked tag
- Speaker Click: View all content from speaker
- Event Click: View all content from event
- Toggle View: Switch between grid and list layouts
- Load More: Infinite scroll or pagination
Technical Notes
Component Structure
- ContentLibraryScreen.tsx: Main content library screen
- ContentSearchBar.tsx: Search with autocomplete
- ContentFilters.tsx: Advanced filtering panel
- ContentList.tsx: Content list container
- ContentCard.tsx: Individual content card (grid view)
- ContentRow.tsx: Individual content row (list view)
- BulkActionsBar.tsx: Bulk selection and actions
- VersionHistoryModal.tsx: Version tracking interface
- ContentAnalyticsModal.tsx: Analytics dashboard
- AdvancedSearchModal.tsx: Advanced search interface
- ContentUploadModal.tsx: Upload new content
- MetadataEditor.tsx: Edit content metadata
State Management
- Local State:
- View mode (grid/list)
- Search query
- Active filters
- Selected items (for bulk operations)
- Sort order
- Zustand Store:
- Userโs filter preferences
- View mode preference
- Recent searches
- React Query: Server state for content
contentListquery: Cached for 5 minutescontentDetailsquery: Cached for 10 minutescontentVersionsquery: Cached for 15 minutescontentAnalyticsquery: Cached for 10 minutes
API Integration
- Content List:
GET /api/v1/content/search - Content Details:
GET /api/v1/content/{contentId} - Upload Content:
POST /api/v1/content(multipart/form-data) - Update Metadata:
PUT /api/v1/content/{contentId}/metadata - Delete Content:
DELETE /api/v1/content/{contentId} - Version History:
GET /api/v1/content/{contentId}/versions - Upload Version:
POST /api/v1/content/{contentId}/versions - Analytics:
GET /api/v1/content/{contentId}/analytics - Bulk Operations:
POST /api/v1/content/bulk/{action} - Download:
GET /api/v1/content/{contentId}/download(presigned URL)
Performance Optimization
- Virtual Scrolling: For lists with >100 items
- Lazy Loading: Load thumbnails on demand
- Debounced Search: 300ms debounce on search input
- Pagination: Load 20 items at a time
- Thumbnail Optimization: Compressed thumbnails from CDN
- Memoization: Memoize filter and sort calculations
Caching Strategy
- Content List: 5-minute cache with background refresh
- Content Details: 10-minute cache
- Search Results: 15-minute cache per query
- Thumbnails: CDN caching with long TTL
- Analytics: 10-minute cache
- Cache Invalidation: Invalidate on content update, upload, delete
File Upload Workflow
- Request Upload URL:
POST /api/v1/files/presigned-upload-url - Direct S3 Upload: Client uploads directly to S3
- Confirm Upload:
POST /api/v1/files/{fileId}/confirm - Create Content Record:
POST /api/v1/contentwith fileId - Virus Scan: Automatic S3 Object Lambda scan
- CDN Distribution: File distributed to CloudFront
- Notification: Speaker notified of successful upload
Accessibility
- Keyboard Navigation: Full keyboard access
- ARIA Labels:
aria-label="Search content"on search inputaria-label="Select {title} for bulk action"on checkboxesaria-label="Download {title}"on download buttonsaria-label="View analytics for {title}"on analytics buttons
- Focus Management: Proper focus handling for modals
- Screen Reader Support:
- Content cards fully described
- Stats announced: โ1,247 views, 523 downloads, 4.8 starsโ
- Filter changes announced
- Color Contrast: WCAG 2.1 AA compliant
- Alt Text: Thumbnails include descriptive alt text
API Requirements
Initial Page Load APIs
-
GET /api/v1/content?filter={โstatusโ:โpublishedโ}&sort=-createdAt&page=1&limit=20&facets=contentType,year,speaker,event,tag
- Query params: Filter by published status, sort by recent, pagination, request facets
- Returns: Paginated list of content with facet aggregations
- Response:
{ data: [{ id, title, description, contentType, fileId, eventTitle, eventDate, speakerName, companyName, thumbnailUrl, downloadUrl, tags, viewCount, downloadCount, createdAt, status }], facets: {...}, pagination: {...} } - Used for: Initial content list display
- Consolidated: Story 1.20 unified search with facets (was /api/v1/content/search)
- Benefit: Single call gets content + filter options
-
GET /api/v1/content?aggregateOnly=true&metrics=totalFiles,totalSize,byType
- Returns: Overall library statistics via aggregation
- Response:
{ totalFiles: 1247, presentations: 892, videos: 156, documents: 199, storageUsed: 48693493760, storageLimit: 214748364800 } - Used for: Library statistics bar
- Consolidated: Same search endpoint with aggregateOnly flag (was /api/v1/content/statistics)
- Benefit: Statistics derived from actual content query
-
GET /api/v1/content?filter={}&facets=contentType,year,speaker,event,tag&aggregateOnly=true
- Returns: Available filter options via facet aggregations
- Response:
{ facets: { contentTypes: [{value, count}], years: [{value, count}], speakers: [{value, count}], events: [{value, count}], tags: [{value, count}] } } - Used for: Populate filter dropdowns with counts
- Consolidated: Same search endpoint with facets (was /api/v1/content/facets)
- Benefit: Facets always reflect current filter state
Action APIs
Search & Filter
-
GET /api/v1/content?filter={complexFilter}&sort={field}&page={n}&limit=20&facets=contentType,year,speaker,event,tag
- Triggered by: Search input, filter changes, sort changes
- Query params:
filter={"$and":[{"title":{"$contains":"text"}},{"contentType":"presentation"},{"year":2024}]},sort=-createdAt, pagination, facets - Returns: Filtered content list with facet counts
- Used for: Real-time search and filtering
- Consolidated: Story 1.20 unified search (was /api/v1/content/search)
- Benefit: Single endpoint handles all search/filter combinations, facets update dynamically
-
GET /api/v1/content?filter={advancedCriteria}&facets=all&include=analytics
- Triggered by: [Advanced Search] button
- Query params: Complex filter with multiple conditions, all facets, include analytics
- Returns: Advanced search results with full metadata
- Opens: Advanced search modal with results
- Consolidated: Same search endpoint with complex filters (was /api/v1/content/search/advanced)
- Benefit: No separate advanced search API needed
Content Management
-
POST /api/v1/content
- Triggered by: [+ Upload Content] button
- Content-Type: multipart/form-data
- Payload: File + metadata (title, description, eventId, tags, etc.)
- Returns: Created content with ID
- Side effects: Uploads to S3, creates content record, triggers virus scan
-
PUT /api/v1/content/{contentId}/metadata
- Triggered by: [Edit Metadata] button save
- Payload:
{ title, description, tags, eventId, speakerId } - Returns: Updated content object
- Used for: Update content metadata
-
DELETE /api/v1/content/{contentId}
- Triggered by: [Delete] button confirmation
- Returns:
{ success: true } - Side effects: Soft delete, moves to archive, updates storage quota
-
GET /api/v1/content/{contentId}
- Triggered by: [View] button
- Returns: Complete content details
- Opens: Content Detail/Edit Screen
-
GET /api/v1/content/{contentId}/download
- Triggered by: [Download] button
- Returns:
{ downloadUrl: "presigned S3 URL" } - Used for: Generate secure download link
Version Management
-
GET /api/v1/content/{contentId}/versions?page=1&limit=10
- Triggered by: [Version History] button
- Returns: Paginated list of all versions
- Response:
{ versions: [{ versionNumber, uploadedAt, uploadedBy, fileSize, fileName, status, changeNotes }], pagination: {...} } - Opens: Version History modal
- Consolidated: Story 1.20 standard versions endpoint with pagination
-
POST /api/v1/content/{contentId}/versions
- Triggered by: Upload new version
- Payload: New file + change notes
- Returns: New version object
- Side effects: Creates new version, archives previous
- Consolidated: Story 1.20 standard version creation
-
POST /api/v1/content/{contentId}/versions/{versionId}/revert (or PATCH with revert action)
- Triggered by: [Revert to this version] button
- Returns: Reverted content object
- Side effects: Makes selected version current, creates new version entry
- Note: Can be implemented as PATCH with revert action for RESTful design
-
GET /api/v1/content/{contentId}/versions/compare?v1={n}&v2={m}
- Triggered by: [Compare with v{n}] button
- Query params:
v1={versionNumber1},v2={versionNumber2} - Returns: Comparison data
- Opens: Version comparison view
- Note: Could be implemented as sub-resource or query params
Analytics
-
GET /api/v1/content/{contentId}/analytics?metrics=views,downloads,rating&period=30days
- Triggered by: [Analytics] button
- Query params:
metrics=views,downloads,rating,reviews,period=30days - Returns: Analytics data with selected metrics
- Response:
{ views, downloads, rating, reviews, viewsOverTime, downloadsOverTime, topViewerCompanies, viewerRoles, recentReviews } - Opens: Analytics modal
- Consolidated: Story 1.20 analytics endpoint with metrics parameter
- Benefit: Flexible metric selection, reduces payload size
-
GET /api/v1/content/{contentId}/analytics/export?format=pdf
- Triggered by: [Export Report] button
- Query params:
format=pdf - Returns:
{ downloadUrl, expiresAt } - Used for: Download analytics report
- Note: Standard export pattern for analytics data
Bulk Operations
-
POST /api/v1/content/bulk
- Triggered by: [Download Selected] button
- Payload:
{ action: "download", contentIds: [] } - Returns:
{ zipUrl: "presigned S3 URL for ZIP", expiresAt } - Used for: Bulk download as ZIP
- Consolidated: Single bulk endpoint (was POST /api/v1/content/bulk/download)
- Benefit: Unified bulk operations API
-
POST /api/v1/content/bulk
- Triggered by: [Tag] button
- Payload:
{ action: "tag", contentIds: [], addTags: [], removeTags: [] } - Returns:
{ updatedCount: n, successful: [...], failed: [...] } - Used for: Bulk tag management
- Consolidated: Same bulk endpoint with tag action (was POST /api/v1/content/bulk/tag)
- Benefit: Consistent bulk operation pattern
-
POST /api/v1/content/bulk
- Triggered by: [Archive] button
- Payload:
{ action: "archive", contentIds: [] } - Returns:
{ archivedCount: n, successful: [...], failed: [...] } - Used for: Bulk archive
- Consolidated: Same bulk endpoint with archive action (was POST /api/v1/content/bulk/archive)
- Benefit: Single API for all bulk operations
-
POST /api/v1/content/bulk
- Triggered by: [Delete] button confirmation
- Payload:
{ action: "delete", contentIds: [] } - Returns:
{ deletedCount: n, successful: [...], failed: [...] } - Used for: Bulk delete
- Consolidated: Same bulk endpoint with delete action (was POST /api/v1/content/bulk/delete)
- Benefit: Consistent error handling across all bulk operations
Review & Approval (Organizer Only)
-
POST /api/v1/content/{contentId}/approve
- Triggered by: [Approve] button
- Payload:
{ comments } - Returns: Updated content with status=published
- Side effects: Publishes content, notifies speaker
-
POST /api/v1/content/{contentId}/reject
- Triggered by: [Reject] button
- Payload:
{ reason, feedback } - Returns: Updated content with status=rejected
- Side effects: Rejects content, notifies speaker with feedback
Navigation Map
Primary Navigation Actions
-
โ Back to Dashboard button โ Navigate to appropriate dashboard
- Type: Full page navigation
- Target: Role-dependent (OrganizerโEvent Management Dashboard, SpeakerโSpeaker Dashboard, AttendeeโPersonal Dashboard)
-
[+ Upload Content] button โ Opens upload modal
- Type: Modal overlay
- Opens: Content upload wizard
- Role-based access: Organizer (all events), Speaker (own events only)
-
Search input โ Filters content list
- Type: In-place filtering
- Debounced: 300ms delay
- No navigation
-
[Advanced Search] button โ Opens advanced search modal
- Type: Modal overlay
- Opens: Advanced search with additional criteria
- No screen navigation
-
Filter dropdowns โ Filters content list
- Type: In-place filtering
- Updates content list
- No navigation
-
[Clear Filters] button โ Resets all filters
- Type: In-place action
- Clears all active filters
- No navigation
-
Sort dropdown โ Changes sort order
- Type: In-place sorting
- Options: Recent, Popular, Most Downloaded, Rating, Alphabetical
- No navigation
-
[Grid/List] toggle โ Switches view mode
- Type: In-place view change
- Toggles between grid cards and list rows
- No navigation
Bulk Actions
-
Select All checkbox โ Selects/deselects all visible items
- Type: In-place selection
- Updates: Selection counter, enables bulk actions
- No navigation
-
[Download Selected] button โ Downloads selected content
- Type: File download
- API call:
POST /api/v1/content/bulk/download - Downloads: ZIP file with selected content
- No navigation
-
[Tag] button โ Opens bulk tag editor
- Type: Modal overlay
- Opens: Tag management modal for selected items
- No screen navigation
-
[Archive] button โ Archives selected content
- Type: Confirmation dialog โ API call
- Confirmation: โArchive {n} items?โ
- No screen navigation
-
[Delete] button โ Deletes selected content
- Type: Confirmation dialog โ API call
- Confirmation: โPermanently delete {n} items?โ
- No screen navigation
Content Card Actions
-
Content card checkbox โ Selects item for bulk operations
- Type: In-place selection
- Updates: Selection counter, bulk actions bar
- No navigation
-
Thumbnail click โ Opens content viewer
- Type: Modal or full page
- Opens: Content preview/viewer
- No screen navigation (modal)
-
Title click โ Navigate to Content Detail/Edit Screen
- Type: Full page navigation
- Target: story-multi-role-content-detail-edit.md
- Context: Content ID passed
-
Speaker name click โ Filters by speaker
- Type: In-place filtering
- Applies speaker filter
- No navigation
-
Event name click โ Navigate to Event Details
- Type: Full page navigation
- Target: Event Detail page (role-dependent view)
-
Tag click โ Filters by tag
- Type: In-place filtering
- Applies tag filter
- No navigation
-
[View] button โ Navigate to Content Detail/Edit Screen
- Type: Full page navigation
- Same as title click
-
[Download] button โ Downloads content file
- Type: File download
- API call:
GET /api/v1/content/{contentId}/download - Downloads: File via presigned URL
- No navigation
-
[Edit Metadata] button โ Opens metadata editor
- Type: Modal overlay
- Opens: Metadata edit form
- Role-based access: Organizer (all), Speaker (own only)
- No screen navigation
-
[Version History] button โ Opens version history modal
- Type: Modal overlay
- API call:
GET /api/v1/content/{contentId}/versions - Opens: Version History modal
- No screen navigation
-
[Analytics] button โ Opens analytics modal
- Type: Modal overlay
- API call:
GET /api/v1/content/{contentId}/analytics - Opens: Analytics modal
- No screen navigation
-
[โฎ More] menu โ Opens action menu
- Type: Dropdown menu
- Actions: Feature, Archive, Duplicate, Share, Report
- No screen navigation
Version History Modal Actions
-
[View] button (version) โ Opens version viewer
- Type: Modal or new tab
- Opens: Content viewer for specific version
- No screen navigation
-
[Download] button (version) โ Downloads version
- Type: File download
- Downloads: Specific version file
- No navigation
-
[Compare with v{n}] button โ Opens comparison view
- Type: Modal overlay
- Opens: Side-by-side version comparison
- No screen navigation
-
[Revert to this version] button โ Reverts to version
- Type: Confirmation dialog โ API call
- Confirmation: โRevert to version {n}?โ
- Updates: Current version, closes modal
- No screen navigation
-
[Close] button (modal) โ Closes modal
- Type: Modal dismiss
- Returns to library screen
- No screen navigation
Analytics Modal Actions
-
[View All Reviews] link โ Opens reviews page
- Type: Modal expansion or new page
- Shows: Complete reviews list
- No screen navigation (modal expansion)
-
[Export Report (PDF)] button โ Downloads analytics report
- Type: File download
- API call:
GET /api/v1/content/{contentId}/analytics/export - Downloads: PDF report
- No navigation
-
[Close] button (analytics modal) โ Closes modal
- Type: Modal dismiss
- Returns to library screen
- No screen navigation
Pagination Actions
-
[Load More] button โ Loads additional content
- Type: In-place content expansion
- API call: Increments offset
- Appends: Additional content cards
- No navigation
-
Scroll to bottom โ Infinite scroll trigger
- Type: Auto-load
- Triggers: Load more content
- No manual navigation
Error States & Redirects
-
No content found โ Shows empty state
- Type: In-page message
- Message: โNo content matches your searchโ
- Action: [Clear Filters] or [Upload Content] button
- No navigation
-
Upload error โ Shows error notification
- Type: Toast notification
- Message: โUpload failed. Please try again.โ
- Action: [Retry] button
- No navigation
-
API error loading content โ Shows error state
- Type: In-page error
- Message: โUnable to load contentโ
- Action: [Retry] button
- No navigation
-
Network error โ Shows offline state
- Type: Banner notification
- Message: โYou are offline. Showing cached content.โ
- Shows: Last cached data
- No navigation
Responsive Design Considerations
Mobile Layout Changes
- Search Bar: Full-width with filters in bottom sheet
- Bulk Actions: Sticky bottom bar when items selected
- Content Cards: Single column, stacked vertically
- List View: Optimized compact rows for mobile
- Filters: Bottom sheet instead of inline dropdowns
- Statistics: Simplified, scrollable horizontal cards
- Modals: Full-screen on mobile
Tablet Layout Changes
- Content Cards: Two-column grid
- Filters: Collapsible sidebar
- Version History: Side panel instead of modal
Mobile-Specific Interactions
- Swipe to Select: Swipe right to select for bulk actions
- Pull to Refresh: Refresh content list
- Long Press: Long press for quick actions menu
- Bottom Sheet Filters: Open filters in bottom sheet
- Sticky Search: Search bar sticky at top when scrolling
Accessibility Notes
- Keyboard Navigation: All interactive elements accessible via Tab key
- ARIA Labels: Descriptive labels for all actions
- Focus Management: Proper focus handling for modals and dropdowns
- Screen Reader Support: Complete announcements for actions and changes
- Color Contrast: WCAG 2.1 AA compliant (4.5:1 minimum)
- Alt Text: Thumbnails and icons include descriptive alt text
- Skip Links: โSkip to content listโ for keyboard users
- ARIA Live Regions: Search results and filter changes announced
State Management
Local Component State
viewMode: โgridโ | โlistโsearchQuery: stringfilters: objectsortBy: stringselectedItems: ContentId[]isVersionHistoryOpen: booleanisAnalyticsOpen: boolean
Global State (Zustand Store)
content.viewPreferences: objectcontent.filterPreferences: objectcontent.recentSearches: string[]auth.currentUser: Userauth.currentRole: UserRole
Server State (React Query)
contentList: Content list (cached for 5 minutes)contentDetails: Individual content (cached for 10 minutes)contentVersions: Version history (cached for 15 minutes)contentAnalytics: Analytics data (cached for 10 minutes)contentStatistics: Library stats (cached for 5 minutes)
Real-Time Updates
- Upload Progress: Live progress updates during upload
- Review Status: Real-time updates when content approved/rejected
- View Count: Periodic refresh of view counts
- New Content: Notification when new content added
Edge Cases & Error Handling
- Empty Library: Show โNo content in library yetโ with [Upload Content] CTA
- No Search Results: Show โNo content matches your searchโ with suggestions
- Upload Too Large: Block upload, show file size limit message
- Upload Failed: Show error with [Retry] button
- Delete Confirmation: Require confirmation for permanent deletion
- Version Limit: Warn when approaching version limit (if any)
- Storage Quota: Show warning when 80% storage used
- Quota Exceeded: Block upload, suggest cleanup
- Loading State: Display skeleton cards while loading
- API Error: Show error banner with [Retry] button
- Network Timeout: Show cached data with โViewing offline versionโ banner
- Permission Denied: Hide edit/delete buttons for unauthorized users
- Concurrent Edit: Warn โContent was modified by another userโ
Change Log
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-10-04 | 1.0 | Initial wireframe creation for Content Library/Repository Screen | Sally (UX Expert) |
Review Notes
Open Questions
- Version Limit: Should there be a maximum number of versions per content item?
- Auto-Archiving: Should old content be automatically archived after X years?
- Content Moderation: Should there be a moderation queue for all uploads or only first-time speakers?
- Sharing: Should content be shareable outside the platform (public links)?
- Collaboration: Should multiple speakers be able to co-author content?
- License Management: Should content have license/usage rights metadata?
Design Iterations
- v1.0: Initial comprehensive design with grid/list views, version control, analytics
- Consider adding: Content collections/playlists for curated content groupings
- Consider adding: Collaborative annotations and comments on content
- Consider adding: Content recommendation engine based on viewing history
Stakeholder Feedback
- Pending review from organizers for bulk operations workflow
- Need to validate version control UX with speakers
- Confirm analytics metrics with business requirements
- Validate storage quota limits with infrastructure team