Story 7.1: Speaker Profile Management - Wireframe
Story: Epic 7, Story 7.1
Speaker Profile Management
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Back to Dashboard My Speaker Profile [Preview] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββ PUBLIC PROFILE βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β ββββββββββ Peter Muller [Edit] β β
β β β [Photo]β Principal Cloud Architect @ TechCorp AG β β
β β β β Zurich, Switzerland β β
β β ββββββββββ Member since: March 2020 β’ 12 talks β’ 4.7β
avg rating β β
β β β β
β β Bio: β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Cloud native enthusiast with 10+ years building scalable platforms. β β β
β β β Specializing in Kubernetes, DevOps, and cloud architecture. CNCF β β β
β β β contributor and regular conference speaker across Europe. β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β [π LinkedIn] [π¦ Twitter] [π» GitHub] [π Website] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ TOPICS ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Topics I Can Speak About [+ Add Topic] β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β’ Kubernetes at Scale [Remove] β β β
β β β β’ GitOps and CI/CD Best Practices [Remove] β β β
β β β β’ Cloud Cost Optimization [Remove] β β β
β β β β’ Container Security [Remove] β β β
β β β β’ Microservices Architecture [Remove] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [Save Changes] [Cancel] [Preview Public View] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Interactive Elements
- Photo management: Upload, crop, and preview professional photo
- Topic management: Add and remove speaking topics
- Social links: Direct integration with professional networks
- Public preview: See profile as attendees will see it
- Auto-save: Changes saved automatically
Functional Requirements Met
- FR3: Speaker self-service profile management
- Complete control over public profile appearance
- Topic expertise for organizer matching
User Interactions
- Public Profile: Edit photo, bio, company info, social links
- Topics: Add and remove speaking topics
- Preview: See public-facing profile before publishing
Technical Notes
- Component: SpeakerProfile.tsx
- Image upload with crop/resize using react-image-crop
- Real-time profile preview with mock data
- Tag input component for topics
- Form validation with react-hook-form
- Auto-save with debounced updates
API Requirements
Initial Page Load APIs
When the Speaker Profile Management screen loads, the following APIs are called to provide the necessary data:
-
GET /api/v1/speakers/{speakerId}?include=profile,events,feedback
- Consolidated API: Replaces
/profile,/topics, and/statisticsendpoints - Returns: Complete speaker profile with:
- Profile data (photo URL, bio, company, location, member since, social links)
- Speaking topics embedded in profile
- Event history with talk count
- Feedback summary with average rating
- Statistics (total talks, attendance metrics, engagement scores)
- Used for: Populate all profile sections in a single call
- Consolidation benefit: 3 endpoints β 1 endpoint (67% reduction), atomic data load
- Consolidated API: Replaces
-
GET /api/v1/topics/popular
- Query params: limit (20)
- Returns: List of popular speaking topics for suggestions
- Used for: Suggest topics when adding new speaking topics
Action APIs
Profile Management
-
PUT /api/v1/speakers/{speakerId}
- Consolidated API: Replaces
/profilePUT endpoint - Payload:
{ name, title, company, location, bio, socialLinks: { linkedin, twitter, github, website }, topics: [] } - Response: Updated complete speaker profile, validation errors if any
- Used for: Update public profile information including topics
- Consolidation benefit: Single update endpoint for all profile data including topics
- Consolidated API: Replaces
-
POST /api/v1/speakers/{speakerId}/profile/photo
- Payload: Image file upload (multipart/form-data)
- Response: Photo URL, thumbnail URL
- Used for: Upload and update profile photo
-
DELETE /api/v1/speakers/{speakerId}/profile/photo
- Response: Deletion confirmation, reverts to default avatar
- Used for: Remove profile photo
-
PATCH /api/v1/speakers/{speakerId}
- Consolidated API: Uses PATCH for partial updates (auto-save)
- Payload: Partial profile updates (only changed fields)
- Response: Auto-save confirmation, timestamp
- Used for: Auto-save profile changes as user types (debounced)
- Consolidation benefit: Standard PATCH pattern for partial updates
Topics Management
- GET /api/v1/topics/search
- Query params: query, limit (10)
- Returns: Matching topics for autocomplete
- Used for: Search and suggest topics while typing
Profile Preview & Publishing
-
GET /api/v1/speakers/{speakerId}?include=profile,events,feedback
- Consolidated API: Uses standard GET with includes for preview
- Returns: Public-facing profile as attendees/organizers will see it
- Used for: Generate preview of public profile
- Consolidation benefit: Same endpoint as profile view, consistent data representation
-
POST /api/v1/speakers/{speakerId}/profile/publish
- Response: Publication confirmation, profile URL
- Used for: Publish profile changes (if draft mode is enabled)
-
GET /api/v1/speakers/{speakerId}?include=profile
- Consolidated API: Uses standard GET for completeness check
- Returns: Profile data analyzed for completeness
- Client calculates: Profile completion percentage, missing fields, recommendations
- Used for: Show profile completion status and suggestions
- Consolidation benefit: No separate endpoint needed, client-side calculation from standard profile data
Navigation Map
Primary Navigation Actions
-
β Back to Dashboard button β Navigate back to
Speaker Dashboard- Auto-saves any pending changes
- Returns to main speaker dashboard
-
[Preview] button β Opens public profile preview
- Shows profile as attendees/organizers see it
- Opens in modal or new tab
- Can navigate to full preview screen
-
[Edit] button (Public Profile section) β Enables inline editing
- Makes fields editable
- Shows save/cancel buttons
- No screen navigation
-
Photo upload area click β Opens file picker
- Select image file
- Opens crop/resize interface
- Uploads and updates photo
- No screen navigation
-
Social link button ([π LinkedIn], [π¦ Twitter], etc.) β Opens link input modal
- Enter/edit social media URL
- Validate URL format
- Updates link
- No screen navigation
-
[+ Add Topic] button β Opens topic input field
- Text input with autocomplete
- Search existing topics
- Add custom topic option
- No screen navigation
-
Topic [Remove] button β Removes topic
- Confirmation prompt for custom topics
- Removes from list
- Updates profile
- No screen navigation
-
[Save Changes] button β Triggers save
- Validates all fields
- Saves profile updates
- Shows success notification
- No screen navigation
-
[Cancel] button β Reverts unsaved changes
- Confirmation prompt if changes made
- Reloads original profile data
- No screen navigation
-
[Preview Public View] button β Navigate to
Public Profile Preview Screen- Full-page public profile view
- Shows profile as others see it
- Edit button returns to management screen
Secondary Navigation (Data Interactions)
-
Profile photo hover β Shows edit/remove options
- Upload new photo
- Remove current photo
- No navigation
-
Bio text field focus β Shows character count
- Live character counter
- Formatting tips
- No navigation
-
Social link click (when not editing) β Opens external link
- Opens in new tab
- Validates link works
- No app navigation
-
Topic autocomplete suggestion click β Adds topic
- Selects suggested topic
- Adds to topics list
- Closes autocomplete
- No screen navigation
Event-Driven Navigation
-
Profile saved successfully β Shows success notification
- Confirmation message
- Last saved timestamp
- No automatic navigation
-
Profile validation error β Shows error notifications
- Highlights invalid fields
- Provides correction suggestions
- No automatic navigation
-
Photo upload complete β Updates photo display
- Shows new photo
- Updates preview
- No screen navigation
-
Auto-save triggered β Shows subtle save indicator
- Saving⦠indicator
- Saved timestamp when complete
- No screen navigation
-
Profile completeness milestone β Shows celebration notification
- Profile X% complete
- Suggests next steps
- No automatic navigation
-
Profile viewed by organizer β Shows notification (if enabled)
- Profile view count
- Potential opportunity indicator
- No automatic navigation
-
Profile incomplete warning β Shows reminder banner
- Lists missing fields
- Links to incomplete sections
- Dismissible
- No automatic navigation