Story 5.2: Event Details Page (Attendee View) - Wireframe
Story: Epic 5, Story 5.2 - Personal Engagement Management
Visual Wireframe
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Back to Dashboard BATbern Event Details [Share ‴] [β’β’β’] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββ EVENT HEADER βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β π SPRING CONFERENCE 2025: CLOUD NATIVE ARCHITECTURE β β
β β β β
β β π
May 15, 2025 β’ 08:30 - 17:30 π Kursaal Bern β β
β β β β
β β β
Registered [ View My Schedule ] [ Add to Calendar β¬ ] β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββ EVENT OVERVIEW βββββββββββββββ¬β MY PARTICIPATION βββββββββββββββββββββββββ β
β β β β β
β β π Description β β
Registration Status: Confirmed β β
β β Comprehensive deep-dive into β Registration #: BAT-2025-045 β β
β β cloud-native architecture, β β β
β β featuring 8 expert speakers. β π My Selected Sessions: 4/6 β β
β β β Morning: 2 sessions β β
β β π― Topics Covered: β Afternoon: 2 sessions β β
β β β’ Kubernetes at Scale β β β
β β β’ Service Mesh β π Bookmarked Content: 3 items β β
β β β’ Cloud Security β β β
β β β’ GitOps & CI/CD β [ Manage My Schedule β ] β β
β β β [ View QR Code β ] β β
β β ποΈ Free Admission β β β
β β π₯ Expected: ~200 attendees β β β
β β β β β
β βββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββ SESSION SCHEDULE βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Filter: [All Sessions β·] [My Schedule Only β] [Morning β] [Afternoon β] β β
β β β β
β β ββ 09:00-09:45 βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Keynote: Future of Cloud Native [In My Schedule] β β β
β β β π€ Sara Kim (Docker Inc.) Room: Main Hall β β β
β β β "Exploring the future of cloud-native platforms..." β β β
β β β π₯ 195/200 attending [View Details β] β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββ 09:45-10:30 ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Kubernetes Best Practices [In My Schedule] β β β
β β β π€ Peter Muller (TechCorp AG) Room: Hall A β β β
β β β "Production-ready K8s deployments at scale..." β β β
β β β π₯ 87/120 attending [View Details β] β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββ 10:30-11:00 ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Coffee Break & Networking β β β
β β β Location: Foyer β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββ 11:00-11:45 ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Service Mesh Architecture [+ Add to Schedule] β β β
β β β π€ Thomas Weber (Swiss Re) Room: Hall B β β β
β β β "Implementing Istio in enterprise environments..." β β β
β β β π₯ 92/120 attending [View Details β] β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β [Show All Sessions (6 more) β] β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββ SPEAKER LINEUP ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β 8 Expert Speakers: [View All Speakers β] β β
β β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββ β β
β β β [Photo] β β [Photo] β β [Photo] β β [Photo] β β β
β β β β β β β β β β β β
β β β Sara Kim β β Peter β β Thomas β β Anna β β β
β β β β β Muller β β Weber β β Lopez β β β
β β β Docker Inc.β β TechCorp β β Swiss Re β β Google β β β
β β β β β β β β β β β β
β β β 2 Sessions β β 1 Session β β 1 Session β β 1 Session β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββ β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββ VENUE & LOGISTICS βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β π Kursaal Bern πΊοΈ [Interactive Map] β β
β β Kornhausstrasse 3, 3013 Bern β β
β β β β
β β π Public Transport: π Parking: β β
β β β’ Tram 3, 6: "Kursaal" β’ Kursaal Parking (CHF 3/h) β β
β β β’ Bus 12: "Kornhausplatz" β’ Park & Ride available β β
β β β β
β β [ Get Directions β ] [ Download Venue Map (PDF) ] β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββ RELATED CONTENT βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β π Related Past Events: β β
β β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Fall 2024: Cloud Security π 3 presentations β β β
β β β Spring 2024: Kubernetes Deep Dive π 5 presentations β β β
β β β Fall 2023: Microservices Architecture π 4 presentations β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β [ Browse All Events β ] [ Search Archive β ] β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββ QUICK ACTIONS βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β [ π§ Email Event Details ] [ π Copy Event Link ] [ π± Add to Wallet ] β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Interactive Elements
- [β Back to Dashboard] button: Return to Personal Attendee Dashboard (story-5.2-personal-dashboard.md)
- [Share ‴] button: Opens share modal with options (Email, LinkedIn, Twitter, Copy Link)
- [β’β’β’] menu: Additional options dropdown (Report Issue, Download All Materials, Remove from My Events)
- [View My Schedule] button: Opens personalized schedule view with only selected sessions
- [Add to Calendar β¬] dropdown: Download options (iCal, Google Calendar, Outlook)
- [Manage My Schedule β] button: Navigate to Session Selection/Modification screen
- [View QR Code β] button: Display event check-in QR code
- Session checkboxes (β): Indicates session is in personal schedule
- [In My Schedule] / [+ Add to Schedule] buttons: Toggle session in personal schedule
- [View Details β] links: Open Session Details Modal (story-2.4-session-details-modal.md)
- [View All Speakers β] link: Navigate to Speaker Lineup page
- Speaker photo cards: Click to view Speaker Profile Detail (story-7.1-speaker-profile-detail-view.md)
- [Interactive Map]: Embedded Google Maps with venue location
- [Get Directions β] button: Open directions in default map app
- [Download Venue Map (PDF)] button: Download printable venue map
- Related event cards: Click to navigate to past event details
- [Browse All Events β] button: Navigate to Historical Archive (story-1.18-historical-archive.md)
- [Search Archive β] button: Navigate to Content Discovery (story-5.1-content-discovery.md)
- Quick action buttons: Trigger respective actions (email, copy link, add to wallet)
Functional Requirements Met
- FR6: Event details prominently displayed with complete logistics and registration information
- FR14: Personal engagement management through session selection, bookmarking, and calendar integration
- FR6: Clear event information display with date, location, and topic details
- FR11: Access to related historical events and content archive
- FR15: Mobile-optimized layout with responsive design (mobile wireframe adaptations below)
Technical Notes
- Real-time Attendance Updates: WebSocket connection for live session capacity updates
- Responsive Design: Mobile-first approach with collapsible sections for small screens
- Caching Strategy: Event details cached with 5-minute TTL, session capacity refreshed every 30 seconds
- State Management: Zustand store for personal schedule (selectedSessions array)
- Calendar Integration: iCal file generation using ics library
- QR Code Generation: Dynamic QR code with registration details (qrcode.react library)
- Map Integration: Google Maps Embed API with venue coordinates
- Share Functionality: Web Share API with fallback to modal for unsupported browsers
- Wallet Integration: Apple Wallet / Google Pay pass generation via Passkit
API Requirements
Initial Page Load APIs
-
GET /api/v1/events/{eventId}
- Returns: Complete event details (id, title, description, eventDate, startTime, endTime, venue, topics, maxAttendees, registrationOpen, admissionFee)
- Used for: Display in header, event overview section, venue details, SEO meta tags
-
GET /api/v1/events/{eventId}/sessions
- Query params: includeCapacity=true, includeSpeakers=true
- Returns: Array of sessions (id, title, startTime, endTime, sessionType, room, description, speakerId, speakerName, speakerCompany, currentAttendees, maxCapacity)
- Used for: Display session schedule, speaker lineup, capacity indicators
-
GET /api/v1/events/{eventId}/speakers
- Returns: Array of speakers (id, firstName, lastName, company, profilePhoto, position, sessionCount, sessionTitles)
- Used for: Display speaker lineup section, speaker photos and details
-
GET /api/v1/registrations/me?eventId={eventId}
- Returns: Userβs registration details (registrationNumber, status, selectedSessions[], qrCodeData, registeredAt)
- Used for: Display registration status, populate βMy Participationβ section, show QR code data
-
GET /api/v1/events/{eventId}/venue
- Returns: Venue details (name, address, mapUrl, coordinates, publicTransport[], parkingInfo, venueMapPdfUrl)
- Used for: Display venue section, embed map, show transportation options
-
GET /api/v1/events/related?eventId={eventId}&limit=3
- Returns: Related events based on topics (id, title, eventDate, sessionCount, presentationCount)
- Used for: Display related content section
User Action APIs
-
PUT /api/v1/registrations/{registrationId}/sessions
- Triggered by: User clicks [In My Schedule] or [+ Add to Schedule]
- Payload:
{ sessionId: string, action: "add" | "remove" } - Returns: Updated registration with selectedSessions[]
- Used for: Update userβs selected sessions, refresh schedule display
-
GET /api/v1/registrations/{registrationId}/calendar
- Triggered by: User clicks [Add to Calendar] dropdown option
- Query params: format=ical|google|outlook
- Returns: Calendar file or redirect URL
- Used for: Download calendar file or open calendar web service
-
GET /api/v1/registrations/{registrationId}/qr-code
- Triggered by: User clicks [View QR Code]
- Returns: QR code data (base64 image, registrationNumber, checkInUrl)
- Used for: Display QR code modal for event check-in
-
POST /api/v1/events/{eventId}/share
- Triggered by: User clicks [Share] or quick action buttons
- Payload:
{ method: "email" | "link" | "social", recipient?: string } - Returns: Shareable link or confirmation
- Used for: Generate shareable event link, send email with event details
-
GET /api/v1/events/{eventId}/venue-map
- Triggered by: User clicks [Download Venue Map (PDF)]
- Returns: PDF file download
- Used for: Download printable venue map
-
GET /api/v1/registrations/{registrationId}/wallet-pass
- Triggered by: User clicks [Add to Wallet]
- Query params: platform=apple|google
- Returns: Wallet pass file (.pkpass or .pkpass URL)
- Used for: Download Apple Wallet or Google Pay pass
Navigation Map
Primary Navigation Actions
-
β Back button β Navigate to
Personal Attendee Dashboard(story-5.2-personal-dashboard.md)- Target: Personal dashboard with event overview
- Context: Return to dashboard with updated schedule
-
[View My Schedule] button β Opens filtered session view
- Target: Same screen, filtered to show only selected sessions
- Context: Filter state applied to session list
-
[Add to Calendar β¬] dropdown β Calendar integration
- Options: iCal download, Google Calendar, Outlook
- Target: Calendar app or file download
- Context: Event details and selected sessions
-
[Manage My Schedule β] button β Navigate to
Session Selection Screen- Target: Dedicated session management interface
- Context: eventId, current selectedSessions[]
-
[View QR Code β] button β Opens QR Code Modal
- Target: Modal overlay (same page)
- Context: registrationNumber, qrCodeData
Secondary Navigation (Data Interactions)
-
Session [View Details β] link β Opens
Session Details Modal(story-2.4-session-details-modal.md)- Target: Modal overlay with full session information
- Context: sessionId, speakerInfo, session details
-
Speaker photo card β Navigate to
Speaker Profile Detail View(story-7.1-speaker-profile-detail-view.md)- Target: Full speaker profile page
- Context: speakerId, eventContext
-
[View All Speakers β] link β Navigate to
Full Speaker List- Target: Complete speaker lineup page
- Context: eventId, all speakers array
-
Related event card β Navigate to
Event Details(past event)- Target: Same screen structure for historical event
- Context: eventId (past event)
-
[Browse All Events β] button β Navigate to
Historical Archive(story-1.18-historical-archive.md)- Target: Event archive home page
- Context: No filters applied
-
[Search Archive β] button β Navigate to
Content Discovery(story-5.1-content-discovery.md)- Target: Content search interface
- Context: Pre-filled with related topics from current event
Event-Driven Navigation
-
[Share ‴] modal interactions β Various share actions
- Email: Opens email client or share modal
- Social: Opens social platform share dialog
- Copy Link: Copies URL to clipboard (stays on page)
-
Map interactions β External navigation
- [Get Directions]: Opens Google Maps/Apple Maps app
- [Interactive Map]: Shows map modal or inline navigation
Error States & Redirects
-
Registration not found β Redirect to
Event Registration Flow- Condition: User not registered for event
- Target: story-2.4-event-registration.md
- Context: eventId, redirect back to details after registration
-
Event not found / 404 β Redirect to
Event Listing- Condition: Invalid eventId
- Target: Event catalog page
- Context: Error message displayed
-
Unauthorized access β Redirect to
Login- Condition: User not authenticated
- Target: Login screen
- Context: Return URL to event details after login
Responsive Design Considerations
Mobile Layout Changes
Stacked Layout (320px - 768px):
- Header: Event title, date, location stacked vertically
- Action buttons: Full-width CTAs ([View My Schedule], [Add to Calendar])
- Event Overview & My Participation: Combined into single collapsible section
- Session Schedule: Card-based layout (one session per row)
- Session time, title, speaker stacked
- Capacity indicator below speaker name
- [+ Add] button moves to bottom of card
- Speaker Lineup: 2-column grid on mobile (down from 4)
- Venue & Logistics: Stacked sections with collapsible transport/parking details
- Related Content: Single column list
- Quick Actions: Bottom sheet modal (fixed at bottom)
Tablet Layout (768px - 1024px):
- 2-column layout for Event Overview / My Participation
- Session Schedule: Full width with compact card design
- Speaker Lineup: 3-column grid
- Venue map: Full width with side-by-side transport/parking info
Mobile-Specific Interactions
- Swipe gestures: Swipe between sessions in schedule
- Pull-to-refresh: Update session capacity and registration status
- Bottom sheet modals: Share options, QR code, session details
- Sticky header: Event title and [Add to Calendar] button sticky on scroll
- Collapsible sections: Tap to expand/collapse venue details, related events
- Touch-optimized: 44px minimum touch target for all interactive elements
- Native share: Use Web Share API on mobile for share functionality
- Add to Wallet: Native wallet integration for iOS/Android
Accessibility Notes
- Keyboard Navigation: All interactive elements accessible via Tab key with logical focus order
- ARIA Labels:
aria-label="Add session to personal schedule"on [+ Add] buttonsaria-label="View session details for Kubernetes Best Practices"on [View Details] linksaria-label="Share event via email, social media, or link"on [Share] buttonrole="region"on main content sections witharia-labelledbypointing to section headers
- Screen Reader Announcements:
- Live region (
aria-live="polite") for session capacity updates - Status announcements when adding/removing sessions from schedule
- Live region (
- Color Contrast: WCAG 2.1 AA compliance (4.5:1 for text, 3:1 for UI components)
- Focus Indicators: 2px solid outline on all focused elements
- Alt Text: All speaker photos have descriptive alt text (
alt="Sara Kim, Docker Inc.") - Semantic HTML: Proper heading hierarchy (h1 for event title, h2 for sections, h3 for subsections)
- Skip Links: βSkip to session scheduleβ and βSkip to speaker lineupβ links at top
State Management
Local Component State
selectedSessionsLocal: Array of session IDs currently in userβs schedule (synced with API)filterState: Current filter settings (All Sessions, My Schedule, Morning, Afternoon)expandedSections: Boolean map of which sections are expanded (mobile only)shareModalOpen: Boolean for share modal visibilityqrCodeModalOpen: Boolean for QR code modal visibility
Global State (Zustand Store)
currentEvent: Complete event object from APIuserRegistration: Userβs registration details including selectedSessions[]sessionCapacities: Real-time session capacity data from WebSocketuserBookmarks: Array of bookmarked content IDs
Server State (React Query)
useEvent(eventId): Event details with 5-minute cacheuseEventSessions(eventId): Sessions with 30-second refetch intervaluseUserRegistration(registrationId): User registration with optimistic updatesuseRelatedEvents(eventId): Related events with 15-minute cache
Real-Time Updates
- WebSocket Connection:
/ws/events/{eventId}/capacity- Updates session capacity every 30 seconds
- Triggers UI update for capacity indicators
- No page refresh required
Form Validation Rules
No forms on this screen - all actions are single-click or selection-based
Edge Cases & Error Handling
-
Empty State (Not Registered):
- Show βYouβre not registered for this eventβ banner
- Replace βMy Participationβ section with [Register Now] CTA
- Hide [View My Schedule] and [View QR Code] buttons
-
Loading State:
- Display skeleton screens for session list, speaker lineup
- Show loading spinner for event header
- Disable interactive elements until data loaded
-
Error State (API Failure):
- Show error message: βUnable to load event details. Please try again.β
- Provide [Retry] button to refetch data
- Cache last successful load if available
-
Session Capacity Full:
- Disable [+ Add to Schedule] button
- Show βSession Fullβ badge
- Offer βJoin Waitlistβ option if available
-
Registration Deadline Passed:
- Show βRegistration Closedβ banner
- Disable session selection if not already registered
- Show alternative: βBrowse upcoming eventsβ
-
Event Date Passed:
- Show βEvent Completedβ badge
- Replace [Add to Calendar] with [View Recordings] button
- Link to event archive and content library
-
Network Offline (PWA):
- Show βYouβre offlineβ banner
- Display cached event data
- Disable actions requiring network (share, calendar sync)
- Queue session selections to sync when online
-
Permission Denied (Calendar, Wallet):
- Show fallback: βDownload calendar file manuallyβ
- Provide alternative wallet pass download link
- Guide user to enable permissions
-
No Related Events Found:
- Hide βRelated Contentβ section if no matches
- Show alternative: βExplore all past eventsβ link
Change Log
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-10-04 | 1.0 | Initial wireframe creation for Event Details Page (Attendee View) | ux-expert |
Review Notes
Stakeholder Feedback
To be added during review
Design Iterations
To be documented as design evolves
Open Questions
-
Session Waitlist: Should we implement waitlist functionality for full sessions in MVP?
- Decision needed from product team
-
Calendar Sync: Support two-way calendar sync or one-way export only?
- Technical feasibility assessment needed
-
Wallet Pass Expiry: How long should event passes remain valid post-event?
- Business rule clarification required
-
Related Events Algorithm: What criteria determine βrelatedβ events (topics, speakers, both)?
- ML/algorithm specification needed