Story 7.1: Speaker Profile Detail View - Wireframe

Story: Epic 7, Story 7.1 - Speaker Community & Networking

Last updated: October 6, 2025 Reading time: 20 minutes File size: 36.95 KB

Visual Wireframe

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ← Back                Speaker Profile                    [βœ‰ Contact] [β˜… Bookmark]   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ SPEAKER PROFILE ──────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  Dr. Peter Muller                                [πŸ”— Share]         β”‚ β”‚
β”‚  β”‚  β”‚        β”‚  Principal Cloud Architect                                          β”‚ β”‚
β”‚  β”‚  β”‚ Photo  β”‚  TechCorp AG β€’ Zurich, Switzerland                                  β”‚ β”‚
β”‚  β”‚  β”‚        β”‚  πŸ”— LinkedIn | 🐦 Twitter | πŸ’» GitHub | 🌐 Website                β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                                      β”‚ β”‚
β”‚  β”‚             Member Since: March 2020 β€’ 12 Talks β€’ 4.7β˜… (89 ratings)            β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€ BIO ───────────────────────────────────────────────────────────────────┐  β”‚ β”‚
β”‚  β”‚  β”‚ Cloud native enthusiast with 10+ years building scalable distributed     β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ systems. Specializing in Kubernetes orchestration, DevOps automation,    β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ and cloud architecture patterns. Active CNCF contributor and regular     β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ conference speaker across Europe. Passionate about sharing knowledge     β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ and mentoring the next generation of cloud engineers.                    β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€ EXPERTISE ─────────────────────────────────────────────────────────────┐  β”‚ β”‚
β”‚  β”‚  β”‚ [Kubernetes] [Docker] [Cloud Architecture] [DevOps] [CI/CD]              β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ [Microservices] [GitOps] [Security] [Cost Optimization]                  β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Languages: German (Native), English (Fluent), French (Conversational)          β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ SPEAKING HISTORY ──────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [All Events β–Ύ] [Filter by Topic]                          Showing 12 of 12     β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ πŸ“… Spring 2024 β€’ Kubernetes at Scale: Production Best Practices          β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    BATbern Spring Conference 2024                                         β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    4.9β˜… (42 ratings) β€’ 156 attendees β€’ [πŸ“„ View Presentation]           β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    "Excellent deep dive into K8s" - Top Comment                           β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ πŸ“… Autumn 2023 β€’ GitOps: The Future of Infrastructure as Code             β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    BATbern Autumn Conference 2023                                         β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    4.6β˜… (38 ratings) β€’ 142 attendees β€’ [πŸ“„ View Presentation]           β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    "Practical and actionable" - Top Comment                               β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ πŸ“… Spring 2023 β€’ Cloud Cost Optimization: Strategies that Actually Work   β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    BATbern Spring Conference 2023                                         β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    4.8β˜… (45 ratings) β€’ 168 attendees β€’ [πŸ“„ View Presentation]           β”‚  β”‚ β”‚
β”‚  β”‚  β”‚    "Saved us thousands!" - Top Comment                                    β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [Load More...] (9 more talks)                                                   β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ AVAILABILITY & PREFERENCES ───────────────────────────────────────────────────┐ β”‚
β”‚  β”‚  🟒 Available for speaking engagements                                           β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Preferred Topics: Kubernetes, Cloud Architecture, DevOps Automation            β”‚ β”‚
β”‚  β”‚  Preferred Formats: 45-min talk, Workshop (half-day), Panel discussion          β”‚ β”‚
β”‚  β”‚  Travel Willingness: Switzerland, Europe (occasionally)                          β”‚ β”‚
β”‚  β”‚  Availability: Evenings, Weekends (with advance notice)                          β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [πŸ“§ Send Invitation] (Organizer only)                                          β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ RATINGS & FEEDBACK ────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Overall Rating: 4.7β˜… from 89 ratings                                            β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ Content Quality:     β˜…β˜…β˜…β˜…β˜… 4.8                                           β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ Delivery:            β˜…β˜…β˜…β˜…β˜† 4.7                                           β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ Engagement:          β˜…β˜…β˜…β˜…β˜… 4.9                                           β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ Practical Value:     β˜…β˜…β˜…β˜…β˜… 4.6                                           β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Recent Feedback:                                                                 β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ β˜…β˜…β˜…β˜…β˜… "Best K8s talk I've attended. Peter explains complex concepts      β”‚  β”‚ β”‚
β”‚  β”‚  β”‚          simply and provides real-world examples." - Anna M., Spring 2024 β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ β˜…β˜…β˜…β˜…β˜† "Great content, would love more hands-on demos next time."         β”‚  β”‚ β”‚
β”‚  β”‚  β”‚          - Thomas W., Autumn 2023                                          β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [View All Feedback (89)]                                                         β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Interactive Elements

  • Contact Button: Allows organizers to send speaking invitation or general message
  • Bookmark Button: Attendees/organizers can bookmark speaker for future reference
  • Share Button: Generate shareable link to speaker profile
  • Social Media Links: Direct links to speaker’s professional profiles (LinkedIn, Twitter, GitHub, Website)
  • Speaking History Cards: Click to view event details and presentation materials
  • Expertise Tags: Clickable to find other speakers with similar expertise
  • Filter Dropdown: Filter speaking history by event, topic, or year
  • Load More Button: Paginated history loading for speakers with many talks
  • Send Invitation Button: (Organizer-only) Opens invitation workflow for this speaker
  • View All Feedback Link: Opens detailed ratings and comments modal
  • Presentation Links: Download or view presentation materials from past talks

Functional Requirements Met

  • FR3: Speaker self-service with complete profile display including bio, expertise, and history; speakers can view their performance feedback and ratings
  • FR10: Speaker portal integration showing comprehensive speaker information accessible to speakers for self-management
  • FR17: Intelligent speaker matching by displaying expertise, availability, speaking preferences, and historical performance ratings to help organizers make informed invitation decisions
  • Quality Assessment: Ratings and feedback system provides data-driven speaker evaluation for organizer decision-making (supports FR17 speaker matching)
  • Profile Visibility: Complete speaker profile view with all relevant information for organizers, attendees, and public users

User Interactions

For All Users (Public View)

  1. View Profile: Browse complete speaker information including bio, expertise, and social links
  2. View Speaking History: See list of past talks with ratings and feedback
  3. Click Expertise Tags: Find other speakers with similar expertise areas
  4. View Presentations: Download or view past presentation materials
  5. Read Feedback: Browse ratings and attendee comments from previous talks
  6. Share Profile: Generate shareable link to this profile

For Organizers

  1. Contact Speaker: Click [βœ‰ Contact] to send message or speaking invitation
  2. Bookmark Speaker: Save speaker to favorites for future events
  3. Send Invitation: Click [πŸ“§ Send Invitation] to initiate speaker invitation workflow
  4. Review Availability: Check speaker’s current availability and preferences
  5. Assess Fit: Review expertise tags, ratings, and past performance for event planning

For Speakers (Self-View)

  1. View Public Profile: See profile as others see it
  2. Edit Profile Link: Navigate to profile management screen (if self-viewing)
  3. Track Profile Views: See how many organizers have viewed profile
  4. Monitor Ratings: Review feedback and ratings from past presentations

For Attendees

  1. Bookmark Speaker: Save to personal content library
  2. Follow Speaker: Opt-in to notifications about future talks by this speaker
  3. Rate/Review: (After attending talk) Provide feedback and rating
  4. Download Content: Access presentation materials from attended talks

Technical Notes

  • Component: SpeakerProfileDetailView.tsx with role-based rendering
  • Permission-Based Display: Show different actions based on user role (organizer vs. attendee vs. public)
  • Responsive Design: Stack sections vertically on mobile, side-by-side on desktop
  • Image Optimization: Lazy load speaker photo and presentation thumbnails
  • Social Media Integration: Validate and display social links with appropriate icons
  • Rating System: Use React-based star rating component with half-star support
  • Pagination: Implement infinite scroll or β€œLoad More” for speaking history
  • Caching Strategy: Cache speaker profiles with React Query for performance
  • Real-time Updates: Show live availability status if speaker updates profile
  • Accessibility: ARIA labels for all interactive elements, keyboard navigation support
  • SEO Optimization: Server-side rendering for public speaker profiles
  • Analytics Tracking: Track profile views, contact attempts, and bookmark actions

API Requirements

Initial Page Load APIs

When the Speaker Profile Detail View screen loads, the following APIs are called to provide the necessary data:

  1. GET /api/v1/speakers/{speakerId}?include=profile,events,materials,timeline,feedback

    • Consolidated API: Replaces 7 separate endpoints (/profile, /expertise, /speaking-history, /availability, /ratings, /feedback, /statistics)
    • Returns: Complete speaker profile with all related data:
      • Profile data (name, title, company, location, photo URL, bio, social links, member since)
      • Expertise areas/topics and languages (embedded in profile)
      • Events/speaking history (paginated within response)
      • Availability status and preferences
      • Feedback summary with ratings breakdown
      • Statistics (total talks, attendees, ratings, profile views)
    • Used for: Populate entire speaker profile page in a single call
    • Consolidation benefit: 7 endpoints β†’ 1 endpoint (86% reduction), atomic data load, no waterfall requests
    • Note: Events are included with ?page=1&limit=10 for initial load, load more via separate call if needed
  2. GET /api/v1/users/me/bookmarks/speakers/{speakerId}

    • Requires authentication
    • Returns: { isBookmarked: boolean }
    • Used for: Show bookmark button state (filled vs. unfilled)

Action APIs

APIs called by user interactions and actions:

Profile Interactions

  1. POST /api/v1/users/me/bookmarks/speakers/{speakerId}

    • Triggered by: [β˜… Bookmark] button click
    • Requires: User authentication
    • Response: { bookmarkId: string, isBookmarked: true }
    • Used for: Add speaker to user’s bookmarks
    • Side effect: Updates bookmark button state to β€œbookmarked”
  2. DELETE /api/v1/users/me/bookmarks/speakers/{speakerId}

    • Triggered by: [β˜… Bookmark] button click (when already bookmarked)
    • Requires: User authentication
    • Response: { success: true, isBookmarked: false }
    • Used for: Remove speaker from bookmarks
    • Side effect: Updates bookmark button state to β€œunbookmarked”
  3. POST /api/v1/speakers/{speakerId}/profile-views

    • Triggered by: Automatically on page load
    • Payload: { viewerId: string, viewerRole: UserRole, timestamp: Date }
    • Response: { success: true }
    • Used for: Track profile views for analytics
    • Side effect: Increments profile view counter
  4. GET /api/v1/speakers/{speakerId}/profile/share-link

    • Triggered by: [πŸ”— Share] button click
    • Response: { shareUrl: string, shortUrl: string }
    • Used for: Generate shareable public link to profile
    • Opens: Share modal with generated link

Communication Actions (Organizer-Only)

  1. POST /api/v1/organizers/messages/compose

    • Triggered by: [βœ‰ Contact] button click
    • Opens: Message composition modal
    • Payload: { recipientId: speakerId, recipientType: "speaker", subject: string, message: string }
    • Response: { messageId: string, sent: true }
    • Used for: Send direct message to speaker
  2. POST /api/v1/events/{eventId}/invitations/send

    • Triggered by: [πŸ“§ Send Invitation] button click
    • Opens: Invitation wizard/modal
    • Payload: { speakerId: string, eventId: string, proposedTopics: string[], deadline: Date }
    • Response: { invitationId: string, status: "sent", sentAt: Date }
    • Used for: Send speaking invitation to speaker
    • Side effect: Creates invitation record, sends email notification

Speaking History Interactions

  1. GET /api/v1/presentations/{presentationId}/download

    • Triggered by: [πŸ“„ View Presentation] link click
    • Response: PDF file or presentation file
    • Used for: Download presentation materials
    • Opens: File download or viewer modal
  2. GET /api/v1/speakers/{speakerId}/events?filter={}&page={currentPage}

    • Consolidated API: Uses events endpoint with pagination
    • Triggered by: [Load More…] button click in speaking history
    • Query params: page={currentPage}, limit=10, sort=-date
    • Returns: Next page of speaking events/history
    • Used for: Load additional speaking history entries (pagination)
    • Consolidation benefit: Events are part of speaker resource, consistent pagination pattern
  3. GET /api/v1/speakers/{speakerId}/events?filter={β€œtopic”:β€œ{selectedTopic}”}&page=1

    • Consolidated API: Uses events endpoint with filtering
    • Triggered by: [Filter by Topic] dropdown selection
    • Query params: Uses JSON filter syntax for topic filtering
    • Returns: Filtered speaking history
    • Used for: Filter speaking history by topic
    • Consolidation benefit: Standard filter pattern across all resources

Ratings & Feedback Actions

  1. GET /api/v1/speakers/{speakerId}/feedback?filter={}&page=1&limit=50

    • Consolidated API: Uses feedback endpoint with pagination
    • Triggered by: [View All Feedback (89)] link click
    • Query params: limit=50, page=1, sort=-date
    • Returns: Complete list of feedback/ratings
    • Opens: Feedback modal or separate page
    • Consolidation benefit: Standard pagination and filtering
  2. POST /api/v1/speakers/{speakerId}/ratings

    • Triggered by: User submits rating (attendees who attended speaker’s talk)
    • Payload: { eventId: string, rating: number, categories: { contentQuality: number, delivery: number, engagement: number, practicalValue: number }, comment: string }
    • Response: { ratingId: string, averageRating: number }
    • Used for: Submit attendee feedback and rating
    • Side effect: Updates speaker’s overall rating

Expertise & Discovery

  1. GET /api/v1/speakers/search

    • Triggered by: Click on expertise tag (e.g., [Kubernetes])
    • Query params: expertise={tagName}, limit=20
    • Response: List of speakers with matching expertise
    • Used for: Find similar speakers with same expertise
    • Opens: Speaker search results page or modal
  2. GET /api/v1/events/upcoming

    • Triggered by: User wants to see upcoming events with this speaker
    • Query params: speakerId={speakerId}, status=published
    • Returns: List of future events where speaker is presenting
    • Used for: Display β€œUpcoming Talks” section (if any)

Primary Navigation Actions

  1. ← Back button β†’ Navigate back to previous screen

  2. [βœ‰ Contact] button β†’ Opens message composition modal

    • Type: Modal overlay
    • Role-based access: Organizer only
    • Opens: Message composer with speaker pre-selected as recipient
    • API call: POST /api/v1/organizers/messages/compose
  3. [β˜… Bookmark] button β†’ Toggles bookmark status

    • Type: In-place interaction (no navigation)
    • Role-based access: Authenticated users
    • Action: Toggle bookmark on/off
    • Visual feedback: Button fills when bookmarked
    • API calls: POST /api/v1/users/me/bookmarks/speakers/{speakerId} or DELETE
  4. [πŸ”— Share] button β†’ Opens share modal

    • Type: Modal overlay
    • Opens: Share dialog with generated link and social sharing options
    • Content: Shareable URL, copy button, social media share buttons
    • API call: GET /api/v1/speakers/{speakerId}/profile/share-link
  5. Social media link buttons ([πŸ”— LinkedIn], [🐦 Twitter], etc.) β†’ Opens external link

    • Type: External navigation
    • Opens: Speaker’s social media profile in new tab
    • No API call needed (static links from profile data)

Secondary Navigation (Data Interactions)

  1. Speaking History Card click β†’ Navigate to event details

  2. [πŸ“„ View Presentation] link click β†’ Opens presentation viewer

    • Type: Modal or new tab (depending on file type)
    • Opens: Presentation viewer (PDF viewer, slide viewer, or file download)
    • API call: GET /api/v1/presentations/{presentationId}/download
  3. Expertise tag click (e.g., [Kubernetes]) β†’ Navigate to speaker search results

    • Target: Content Discovery screen story-5.1-content-discovery.md filtered by expertise
    • Type: Full page navigation
    • Context: Pre-filtered by selected expertise tag
    • API call: GET /api/v1/speakers/search?expertise={tagName}
  4. [Load More…] button click β†’ Loads additional speaking history

    • Type: In-place content expansion
    • No navigation, updates current view
    • API call: GET /api/v1/speakers/{speakerId}/speaking-history with pagination
    • Visual feedback: Loading spinner, then additional cards appear
  5. [Filter by Topic] dropdown selection β†’ Filters speaking history

    • Type: In-place content filtering
    • No navigation, updates speaking history list
    • API call: GET /api/v1/speakers/{speakerId}/speaking-history with topic filter
    • Visual feedback: History list updates to show filtered results

Organizer-Specific Navigation

  1. [πŸ“§ Send Invitation] button β†’ Opens invitation workflow

    • Type: Modal or full page (depending on complexity)
    • Role-based access: Organizer only
    • Opens: Speaker invitation wizard
    • Target: Speaker Invitation Flow (similar to story-3.2-invitation-response.md but from organizer perspective)
    • Pre-fills speaker information
    • API call: POST /api/v1/events/{eventId}/invitations/send
  2. Availability & Preferences section β†’ View only for organizers

    • Type: Display only (no navigation)
    • Role-based visibility: Only shown to organizers
    • Shows: Speaker’s current availability status and speaking preferences
    • Helps organizers make informed invitation decisions

Feedback & Ratings Navigation

  1. [View All Feedback (89)] link β†’ Opens full feedback list

    • Type: Modal or full page
    • Opens: Complete ratings and feedback list
    • Shows: All ratings, comments, and breakdown by category
    • API call: GET /api/v1/speakers/{speakerId}/feedback (full dataset)
    • Allows: Filtering by rating, sorting by date/helpfulness
  2. Rating star click β†’ Opens rating submission (attendees only)

    • Type: Modal overlay
    • Role-based access: Attendees who attended speaker’s talk
    • Opens: Rating form with star rating and comment field
    • API call: POST /api/v1/speakers/{speakerId}/ratings
    • Validation: Must have attended at least one talk by this speaker

Event-Driven Navigation

  1. Profile loaded successfully β†’ No automatic navigation

    • Displays: Complete speaker profile
    • Feedback: None (successful state)
    • Tracks: Profile view for analytics
  2. Contact message sent successfully β†’ Shows confirmation

    • Type: Toast notification
    • Message: β€œMessage sent to Peter Muller”
    • No automatic navigation, stays on profile
  3. Invitation sent successfully β†’ Shows confirmation

  4. Bookmark added/removed β†’ Visual feedback only

    • Type: Button state change
    • Visual: Button fills/unfills
    • No navigation

Error States & Redirects

  1. Speaker profile not found β†’ Navigate to error page

    • Target: 404 error page or Speaker Directory
    • Message: β€œSpeaker profile not found”
    • Suggested action: β€œBrowse all speakers” link
  2. Unauthorized access to organizer-only features β†’ Show permission message

    • Type: Inline message or modal
    • Message: β€œOrganizer access required”
    • No automatic navigation, features hidden/disabled
  3. API error loading profile β†’ Show error state

    • Type: In-page error message
    • Message: β€œUnable to load speaker profile”
    • Action: [Retry] button to reload data
    • No automatic navigation
  4. Network error β†’ Show offline state

    • Type: Banner notification
    • Message: β€œYou are offline. Showing cached data.”
    • Shows: Last cached version of profile (if available)
    • Auto-retries: When connection restored

Self-View Navigation (Speaker viewing own profile)

  1. β€œThis is your profile” banner β†’ Shows edit option

  2. [Edit Profile] button β†’ Navigate to profile editor


Responsive Design Considerations

Mobile Layout Changes

  • Profile Header: Stack photo, name, and contact buttons vertically
  • Bio Section: Full-width text with responsive font sizing
  • Expertise Tags: Wrap tags into multiple rows on smaller screens
  • Speaking History Cards: Full-width cards, stacked vertically
  • Ratings Section: Collapse rating breakdown into expandable accordion
  • Action Buttons: Fixed bottom bar with primary actions (Contact, Bookmark)

Tablet Layout Changes

  • Profile Header: Side-by-side layout with photo on left, info on right
  • Speaking History: Two columns of cards
  • Ratings: Show rating breakdown inline, no accordion needed
  • Navigation: Tablet-optimized back button and breadcrumbs

Mobile-Specific Interactions

  • Swipe Gestures: Swipe left/right on speaking history cards to navigate between talks
  • Pull to Refresh: Refresh speaker profile data by pulling down
  • Tap to Expand: Tap bio section to expand/collapse if exceeds certain height
  • Bottom Sheet: Open filters and share options in bottom sheet instead of modal
  • Sticky Header: Speaker name and photo sticky at top when scrolling

Accessibility Notes

  • Keyboard Navigation: All interactive elements accessible via Tab key
  • ARIA Labels:
    • aria-label="Contact speaker Peter Muller" on contact button
    • aria-label="Bookmark speaker" on bookmark button
    • aria-label="Share profile" on share button
    • aria-label="Speaker rating: 4.7 out of 5 stars" on rating display
  • Focus Indicators: 2px solid border on focused elements with high contrast
  • Screen Reader Support:
    • Profile sections use semantic HTML headings (h2, h3)
    • Speaking history cards have descriptive text for screen readers
    • Star ratings announced as β€œRating: 4.7 out of 5 stars”
  • Color Contrast: All text meets WCAG 2.1 AA standards (4.5:1 minimum)
  • Alt Text: Speaker photo includes descriptive alt text
  • Skip Links: β€œSkip to main content” link for keyboard users
  • ARIA Live Regions: Dynamic updates (bookmarks, ratings) announced to screen readers

State Management

Local Component State

  • showFullBio: boolean - Whether bio section is expanded or collapsed
  • speakingHistoryOffset: number - Current pagination offset for speaking history
  • isContactModalOpen: boolean - Whether contact modal is open
  • isShareModalOpen: boolean - Whether share modal is open
  • isFeedbackModalOpen: boolean - Whether feedback modal is open
  • selectedTopicFilter: string | null - Current topic filter for speaking history

Global State (Zustand Store)

  • auth.currentUser: User - Current authenticated user
  • auth.currentRole: UserRole - Current user role (organizer, speaker, attendee, public)
  • bookmarks.speakerBookmarks: string[] - List of bookmarked speaker IDs
  • ui.notifications: Notification[] - Toast notifications for feedback

Server State (React Query)

  • speakerProfile: Speaker profile data (cached for 5 minutes)
  • speakingHistory: Speaking history data (cached for 10 minutes)
  • speakerRatings: Rating summary (cached for 5 minutes)
  • speakerFeedback: Recent feedback (cached for 5 minutes)
  • speakerAvailability: Availability status (cached for 1 minute, organizer-only)

Real-Time Updates

  • Profile Views: Real-time profile view counter using WebSocket (for speaker self-view)
  • Availability Status: Real-time availability updates when speaker changes status
  • New Ratings: Live rating updates when new feedback is submitted
  • Invitation Status: Real-time notification when organizer sends invitation

Edge Cases & Error Handling

  • Empty Speaking History: Show β€œNo speaking history yet” message with encouragement text
  • No Ratings: Show β€œNo ratings yet” instead of rating breakdown
  • Missing Profile Photo: Display default avatar with speaker initials
  • Broken Social Links: Validate URLs, hide broken links, show working links only
  • Loading State: Display skeleton screens while data loads (profile, history, ratings)
  • API Error: Show error message with [Retry] button: β€œUnable to load speaker profile”
  • Permission Denied: Hide organizer-only sections (availability, send invitation) for non-organizers
  • Offline Mode: Show cached profile data with banner β€œViewing offline version”
  • Slow Network: Show loading indicators for >2 seconds, allow cancellation
  • Bookmark Conflict: Handle optimistic UI updates, rollback on API error
  • Long Bio: Truncate bio text with β€œRead More” expansion if exceeds 5 lines
  • No Availability Data: Show β€œAvailability not set” for organizers (with note to contact speaker directly)
  • Self-View: Add banner β€œThis is your public profile” with [Edit Profile] button for speakers viewing own profile

Change Log

Date Version Description Author
2025-10-02 1.0 Initial wireframe creation for Speaker Profile Detail View Sally (UX Expert)

Review Notes

Open Questions

  1. Profile Privacy: Should speakers have granular privacy controls for what information is visible to public vs. organizers?
  2. Rating System: Should we allow speakers to respond to feedback/ratings?
  3. Profile Completeness: Should we show a completeness indicator for speakers with incomplete profiles?
  4. Related Speakers: Should we show β€œSimilar Speakers” recommendation section at bottom?
  5. Contact History: Should organizers see history of past communications with this speaker?
  6. Availability Calendar: Would a visual calendar view be more helpful than text description for availability?

Design Iterations

  • v1.0: Initial comprehensive design with all key sections
  • Consider adding: β€œUpcoming Talks” section if speaker has confirmed future presentations
  • Consider adding: β€œConnect with colleagues” feature showing other employees from same company who attended speaker’s talks

Stakeholder Feedback

  • Pending review from organizers and speakers for usability validation
  • Need to validate rating categories with historical feedback data
  • Confirm organizer-only vs. public information visibility rules