Story 3.3: Presentation Upload & Management - Wireframe
Story: Epic 3, Story 3 - Presentation Upload & Management
7. Presentation Upload & Management
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Back Presentation Materials - Spring Conference 2025 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Kubernetes Best Practices for Production Environments β
β Due: April 30, 2025 (27 days remaining) Status: In Progress β
β β
β ββββ PRESENTATION SLIDES ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Main Presentation * β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β π Drop PowerPoint/PDF β β β
β β β or Browse Files β β β
β β β β β β
β β β Accepted: .pptx, .pdf, .key β β β
β β β Max size: 50MB β β β
β β β β β β
β β β [Browse Files] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β β k8s-best-practices-v2.pptx β β
β β Uploaded: Mar 28, 14:30 β’ 28 slides β’ 12.3MB β β
β β [Preview] [Replace] [Delete] β β
β β β β
β β Version History: β β
β β β’ v2 - Current (Mar 28) β β
β β β’ v1 - Initial draft (Mar 20) [Restore] β β
β β β β
β β Backup/Demo Materials (optional) β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β + Add backup slides, demo scripts, or video fallbacks β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ SUPPLEMENTARY MATERIALS ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Code Examples / GitHub Repository β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β https://github.com/pmuller/k8s-production-patterns β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β Additional Resources for Attendees β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β’ Monitoring Setup Guide (monitoring-guide.pdf) β [Remove] β β
β β β β’ Example Configurations (configs.zip) β [Remove] β β
β β β β’ Recommended Reading List (resources.md) β [Remove] β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β [+ Add Resource] β β
β β β β
β β β Make resources available for download after event β β
β β β Include my contact info for follow-up questions β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ PRESENTATION REQUIREMENTS βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β Format: 16:9 aspect ratio β οΈ Branding: Add BATbern logo β β
β β β Duration: Fits 45-minute slot β Accessibility: High contrast β β
β β β Font size: Minimum 24pt β οΈ Page numbers: Add to slides β β
β β β β
β β [Download Template] [View Guidelines] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [Save Progress] [Submit for Review] [Request Feedback] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Interactive Elements
- Drag & Drop: Upload presentation files directly
- Version Control: Maintain history of presentation versions
- Preview: View slides before submission
- Supplementary Materials: Add code repos, resources, documentation
- Requirements Checklist: Track compliance with presentation guidelines
Functional Requirements Met
- FR5: Speaker management with presentation upload
- Version control for presentation materials
- Supplementary resource management
- Template and guideline access
User Interactions
- Upload Presentation: Drag & drop or browse for main presentation file
- Manage Versions: View history, restore previous versions
- Add Resources: Upload supplementary materials for attendees
- Check Compliance: Validate against event requirements
- Preview Slides: Review presentation before submission
- Submit for Review: Send to organizers for feedback
Technical Notes
- Resumable file uploads for large presentations
- PDF preview generation for all formats
- Version control with S3 versioning
- Support for multiple file formats (PPTX, PDF, KEY)
API Requirements
APIs needed to load and display data for this screen:
Initial Page Load
-
GET /api/v1/speakers/{speakerId}/events/{eventId}?include=materials,checklist
- Consolidated API: Replaces multiple endpoints (
/presentation,/presentation/versions,/supplementary-materials) - Retrieve event details with materials and checklist included
- Response includes:
- Presentation materials with version history
- Supplementary materials (all types unified under
/materials) - Compliance checklist status
- Material upload status and metadata
- Used for: Populating all presentation information, version history, and supplementary materials in a single call
- Consolidation benefit: 4 endpoints β 1 endpoint (75% reduction), atomic data consistency
- Consolidated API: Replaces multiple endpoints (
-
GET /api/v1/events/{eventId}/presentation-requirements
- Retrieve event-specific presentation requirements
- Response includes: format requirements, branding guidelines, accessibility standards, deadline
- Used for: Requirements checklist display and validation
Template & Guidelines
-
GET /api/v1/events/{eventId}/presentation/template
- Retrieve presentation template file
- Response: Template download URL or redirect to S3
- Used for: [Download Template] action
-
GET /api/v1/events/{eventId}/presentation/guidelines
- Retrieve presentation guidelines document
- Response: Guidelines PDF or markdown content
- Used for: [View Guidelines] action
Action APIs
APIs called by user interactions and actions:
File Upload
-
POST /api/v1/speakers/{speakerId}/events/{eventId}/materials
- Consolidated API: Replaces
/presentation/uploadand/supplementary/upload - Triggered by: Drop file or [Browse Files] button
- Payload: Multipart form-data with file +
{ type: "presentation" | "supplementary" } - Response: Upload confirmation, file URL, metadata (slide count for presentations, size)
- Integration: AWS S3 with resumable upload support
- Processing:
- Generate PDF preview (for presentations)
- Extract slide count (for presentations)
- Create thumbnail previews
- Max size: 50MB for presentations, 25MB for supplementary
- Supported formats: PPTX, PDF, KEY, Google Slides link, any file type for supplementary
- Consolidation benefit: Unified material upload endpoint handles all material types
- Consolidated API: Replaces
-
GET /api/v1/speakers/{speakerId}/presentations/{fileId}/upload-progress
- Triggered by: Polling during large file upload
- Response: Upload progress percentage, estimated time remaining
- Used for: Progress bar display during upload
File Management
-
DELETE /api/v1/speakers/{speakerId}/events/{eventId}/materials/{materialId}
- Consolidated API: Replaces
/presentations/{fileId}and/supplementary/{fileId}DELETE endpoints - Triggered by: [Delete] or [Remove] button
- Response: Deletion confirmation
- Side effect: Remove file from S3, archive in version history
- Consolidation benefit: Single endpoint for all material deletions
- Consolidated API: Replaces
-
PUT /api/v1/speakers/{speakerId}/events/{eventId}/materials/{materialId}
- Consolidated API: Replaces
/presentations/{fileId}/replaceand/supplementary/{fileId}PUT endpoints - Triggered by: [Replace] button or updating resource metadata
- Payload: New file (multipart) OR metadata
{ filename, description, availableAfterEvent } - Response: Updated material details with version history
- Action: Uploads new version (archives old), or updates metadata
- Maintains version history for all material types
- Consolidation benefit: Unified material update endpoint with versioning
- Consolidated API: Replaces
-
GET /api/v1/presentations/{fileId}/preview
- Triggered by: [Preview] button
- Response: PDF preview URL or slide images
- Opens: Preview modal with slide viewer
Version Control
-
POST /api/v1/speakers/{speakerId}/events/{eventId}/materials/{materialId}/restore
- Consolidated API: Replaces
/presentations/restore - Triggered by: [Restore] button on version history item
- Payload:
{ versionId } - Response: Restored version details
- Action: Makes selected version current, archives current as new version
- Consolidation benefit: Standard versioning for all material types
- Consolidated API: Replaces
-
GET /api/v1/presentations/{fileId}/download
- Triggered by: Download link on version history
- Response: Presigned S3 URL for file download
- Used for: Downloading previous versions
GitHub Integration
- PUT /api/v1/speakers/{speakerId}/events/{eventId}/github-repo
- Triggered by: Entering/updating GitHub URL
- Payload:
{ repoUrl } - Response: Validation result, repo metadata (stars, description)
- Validation: Check repo exists and is public
Compliance & Validation
- POST /api/v1/presentations/{fileId}/validate-requirements
- Triggered by: Auto after upload or [Validate] button
- Payload:
{ eventId } - Response: Compliance check results
- Returns:
{ requirements: [{ name, status: "pass|fail|warning", message }] } - Validates: Aspect ratio, branding, page numbers, font sizes
Submission
-
POST /api/v1/speakers/{speakerId}/events/{eventId}/materials/submit
- Consolidated API: Replaces
/presentation/submit - Triggered by: [Submit for Review] button
- Payload:
{ materials: [{ id, type }], notes } - Response: Submission confirmation, review timeline
- Side effects:
- Notifies organizer of submission
- Updates speaker task status to βcompletedβ
- Locks current version for review
- Triggers quality review workflow
- State change: Materials status β βunder_reviewβ
- Consolidation benefit: Single submission endpoint for all material types
- Consolidated API: Replaces
-
POST /api/v1/speakers/{speakerId}/events/{eventId}/materials/request-feedback
- Consolidated API: Replaces
/presentation/request-feedback - Triggered by: [Request Feedback] button
- Payload:
{ specificQuestions: [] } - Response: Feedback request sent confirmation
- Side effect: Notifies organizer, creates feedback task
- Consolidated API: Replaces
Progress Tracking
- PUT /api/v1/speakers/{speakerId}/events/{eventId}/materials/progress
- Consolidated API: Replaces
/presentation/progress - Triggered by: [Save Progress] button or auto-save
- Payload: All form data including checkboxes, URLs, settings
- Response: Save confirmation, last saved timestamp
- Used for: Persisting work-in-progress state
- Consolidated API: Replaces
Navigation Map
Screen transitions triggered by actions and events:
Primary Navigation
-
β Back Button
- Target: Speaker Dashboard (Story 3.3) or Material Submission Wizard (Story 3.3)
- Context: Return to previous screen
- Warning: If unsaved changes, prompt βSave progress?β
-
[Download Template]
- Action: Downloads presentation template file
- No Navigation: Remains on current screen
- Feedback: File download initiated
-
[View Guidelines]
- Target: Guidelines document viewer (modal or new tab)
- Type: Modal overlay or PDF viewer
- Content: Event presentation guidelines and best practices
File Management Navigation
-
[Browse Files]
- Target: System file picker dialog
- Return: Remains on screen after file selection
- Action: Initiates upload process
-
[Preview]
- Target: Presentation preview modal
- Type: Modal overlay with slide viewer
- Features: Navigate slides, zoom, fullscreen
- Close: Returns to current screen
-
[Replace]
- Action: Opens file picker
- No Navigation: Remains on screen
- Flow: Upload new file β version history updated
-
[Delete]
- Confirmation: βAre you sure?β dialog
- No Navigation: Remains on screen
- Feedback: File removed, version archived
-
[Restore] (version history)
- Confirmation: βRestore this version?β dialog
- No Navigation: Remains on screen
- Feedback: Version restored, current version archived
Supplementary Materials Navigation
-
[+ Add Resource]
- Target: File upload dialog or URL input modal
- Type: Modal overlay
- Options: Upload file OR enter URL (GitHub, docs site)
- Return: Closes modal, resource added to list
-
[Remove] (on resource)
- Confirmation: βRemove this resource?β dialog
- No Navigation: Remains on screen
- Feedback: Resource removed from list
-
GitHub Repository Link Click
- Target: GitHub repository (external)
- Type: Opens in new tab
- Purpose: Verify repo before submission
Compliance & Quality Navigation
- Requirements Checklist Item Click
- Target: Requirement details tooltip or modal
- Type: Tooltip or modal
- Content: Explanation of requirement, how to fix
- Example: β16:9 aspect ratio - Your slides must be 1920x1080 or 1280x720β
Submission Flow
-
[Save Progress]
- Action: Saves all current data
- No Navigation: Remains on screen
- Feedback: βProgress savedβ toast notification
-
[Submit for Review]
- Validation: Checks all requirements met
- If Valid:
- Target: Submission confirmation page
- Content: βMaterials submitted successfully. What happens nextβ¦β
- Actions:
- [Return to Dashboard] β Speaker Dashboard (Story 3.3)
- [View Event] β Event Timeline (Story 3.5)
- If Invalid:
- No Navigation: Remains on screen
- Feedback: Error modal showing missing requirements
- Highlight: Invalid items in requirements checklist
-
[Request Feedback]
- Target: Feedback request modal
- Type: Modal overlay
- Content: Text area for specific questions
- Submit: Sends request to organizer
- Confirmation: βFeedback request sentβ toast
- Return: Closes modal, remains on screen
Event-Driven Navigation
-
On Upload Complete
- No Navigation: Remains on screen
- Feedback: Success toast, file details displayed
- Auto-actions:
- Validate requirements
- Generate preview
- Updates: Requirements checklist, version history
-
On Upload Failure
- No Navigation: Remains on screen
- Feedback: Error modal with details and retry option
- Actions: [Retry], [Try Different File], [Contact Support]
-
On Submission Accepted (by organizer)
- Notification: Via email and dashboard notification
- Entry: Link from notification
- Feedback: βYour presentation has been approvedβ banner
- Status: Presentation status β βapprovedβ
-
On Revision Requested (by organizer)
- Notification: Via email and dashboard notification
- Entry: Link from notification opens this screen
- Feedback: Revision request banner with organizer feedback
- Highlight: Specific issues to address
- Status: Presentation status β βneeds_revisionβ
Deadline Management
-
On Deadline Approaching (< 7 days)
- Feedback: Warning banner βPresentation due in 5 daysβ
- Urgency: Red deadline indicator
-
On Deadline Passed
- Feedback: Error banner βPresentation overdueβ
- Action: [Request Extension] button
- Restriction: May block submission, require organizer approval
Error States
-
On File Too Large
- No Navigation: Remains on screen
- Feedback: Error message βFile exceeds 50MB limitβ
- Suggestion: βCompress images or split into multiple filesβ
-
On Unsupported Format
- No Navigation: Remains on screen
- Feedback: Error message βUnsupported file formatβ
- Supported: List supported formats (PPTX, PDF, KEY)
-
On Network Error During Upload
- No Navigation: Remains on screen
- Feedback: βUpload paused - connection lostβ
- Auto-resume: When connection restored
- Action: [Retry Now] button
Mobile-Specific
-
Mobile File Upload
- Options: Camera, Photo Library (for photos), Files app
- Optimization: Upload progress visible in notification
- Background: Support background uploads
-
Mobile Preview
- Target: Full-screen slide viewer
- Gestures: Swipe between slides, pinch to zoom
- Close: Back button returns to screen