Story 6.1: All Topics Browser Screen - Wireframe
Story: Epic 6, Story 6.1 - Partner Topic Voting Integration
Visual Wireframe
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Back to Topic Voting Browse All Topics My Votes: 5/10 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββ SEARCH & FILTERS βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β [π Search topics...] [Clear Filters] β β
β β β β
β β Category: [All βΎ] Popularity: [All βΎ] My Votes: [All βΎ] Sort: [Votes βΎ] β β
β β β β
β β Quick Filters: [Most Popular] [Trending π] [New Topics β¨] [Your Interests] β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ TOPIC STATISTICS βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Total Topics: 47 | Trending: 8 | Your Selections: 5 | Most Voted: Zero β β
β β Trust Security (12 votes) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ TOPIC GRID βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Showing 47 topics [Grid β£] [List β°] β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β π₯ AI/ML in Financial Services β
IN YOUR LISTβ β β
β β β β β β
β β β Practical AI implementation guidance for financial institutions β β β
β β β Category: Technology & Innovation β β β
β β β β β β
β β β π Votes: ββββββββ 12 partners (25%) β β β
β β β π Trending: +4 votes this week β β β
β β β π― Impact: High (regulatory compliance, competitive advantage) β β β
β β β β β β
β β β Top Requesting Partners: UBS, Credit Suisse, Swiss Re β β β
β β β Last Used: Never (new topic) β β β
β β β β β β
β β β [View Details] [β Added] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Zero Trust Security Architecture β β β
β β β β β β
β β β Modern security model eliminating implicit trust in network segments β β β
β β β Category: Security & Compliance β β β
β β β β β β
β β β π Votes: βββββββββ 15 partners (31%) β β β
β β β π Most Popular Topic β β β
β β β π― Impact: High (2026 compliance requirement) β β β
β β β β β β
β β β Top Requesting Partners: PostFinance, Raiffeisen, Swisscom β β β
β β β Last Used: Spring 2023 (18 months ago) β β β
β β β β β β
β β β [View Details] [+ Add to My List] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β¨ Platform Engineering β β β
β β β β β β
β β β Building internal developer platforms for productivity and standardization β β β
β β β Category: DevOps & Infrastructure β β β
β β β β β β
β β β π Votes: ββββ 6 partners (13%) β β β
β β β π Trending: New topic, growing interest β β β
β β β π― Impact: Medium (operational efficiency) β β β
β β β β β β
β β β Top Requesting Partners: Migros, Coop, Die Post β β β
β β β Last Used: Never (new topic) β β β
β β β β β β
β β β [View Details] [+ Add to My List] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Cloud Cost Optimization (FinOps) β β β
β β β β β β
β β β Financial operations for cloud - optimize spending while maintaining perf β β β
β β β Category: Cloud & Infrastructure β β β
β β β β β β
β β β π Votes: ββββββ 10 partners (21%) β β β
β β β π° High ROI potential β β β
β β β π― Impact: High (budget planning, cost savings) β β β
β β β β β β
β β β Top Requesting Partners: SBB, Swisscom, UBS β β β
β β β Last Used: Autumn 2022 (2 years ago) β β β
β β β β β β
β β β [View Details] [+ Add to My List] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Sustainable IT & Green Computing β β β
β β β β β β
β β β ESG-compliant IT infrastructure and datacenter carbon footprint reduction β β β
β β β Category: Sustainability β β β
β β β β β β
β β β π Votes: ββ 3 partners (6%) β β β
β β β π New suggested topic - under review β β β
β β β π― Impact: Medium (ESG requirements) β β β
β β β β β β
β β β Suggested By: Credit Suisse β β β
β β β Status: Under organizer review β β β
β β β β β β
β β β [View Details] [+ Add to My List] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Kubernetes at Scale β β β
β β β β β β
β β β Operating Kubernetes clusters at enterprise scale with best practices β β β
β β β Category: Cloud & Infrastructure β β β
β β β β β β
β β β π Votes: ββ 4 partners (8%) β β β
β β β β οΈ Similar to "Cloud Native Architecture" (last used Mar 2023) β β β
β β β π― Impact: Medium (operational maturity) β β β
β β β β β β
β β β Top Requesting Partners: Swisscom, Die Post β β β
β β β Last Used: May 2021 (3+ years ago) β β β
β β β β β β
β β β [View Details] [+ Add to My List] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β [Load More...] (41 more topics) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ COMPARISON BASKET ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β π Compare Topics (3 selected) [Clear] [Compare]β β
β β AI/ML in Financial | Zero Trust Security | Platform Engineering β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
List View (Alternative Layout)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββ TOPIC LIST (Compact View) ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β # | Topic Title | Category | Votes | Status | Actionβ β
β β βββΌβββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββΌβββββββββΌβββββββ β
β β π₯β Zero Trust Security Architecture β Security β βββββ β β
β Addedβ β
β β 1 β Last: Spring 2023 β’ 15 votes (31%) β & Compliance β 15 β β β β
β β βββΌβββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββΌβββββββββΌβββββββ β
β β π₯β AI/ML in Financial Services β Technology β βββββ β β
β Addedβ β
β β 2 β Last: Never β’ 12 votes (25%) π β Innovation β 12 β β β β
β β βββΌβββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββΌβββββββββΌβββββββ β
β β π°β Cloud Cost Optimization (FinOps) β Cloud & β ββββ β β[+ Add]β β
β β 3 β Last: Autumn 2022 β’ 10 votes (21%) β Infrastructureβ 10 β β β β
β β βββΌβββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββΌβββββββββΌβββββββ β
β β β¨β Platform Engineering β DevOps & β βββ β β[+ Add]β β
β β 4 β Last: Never β’ 6 votes (13%) π β Infrastructureβ 6 β β β β
β β βββΌβββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββΌβββββββββΌβββββββ β
β β β Kubernetes at Scale β Cloud & β β β β[+ Add]β β
β β 5 β Last: May 2021 β’ 4 votes (8%) β Infrastructureβ 4 β β β β
β β βββΌβββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββΌβββββββββΌβββββββ β
β β β β
β β [Load More...] (42 more topics) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Topic Comparison Modal
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β [X] Compare Topics β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββββ¬βββββββββββββββββββββ¬βββββββββββββββββββββ β
β β AI/ML in Financial β Zero Trust β Platform β β
β β Services β Security β Engineering β β
β ββββββββββββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββ€ β
β β Votes: 12 (25%) β Votes: 15 (31%) β Votes: 6 (13%) β β
β β Trending: +4 β Steady growth β New topic β β
β ββββββββββββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββ€ β
β β Impact: HIGH β Impact: HIGH β Impact: MEDIUM β β
β β β’ Competitive edge β β’ Compliance 2026 β β’ Operational β β
β β β’ Regulatory β β’ Security posture β β’ Efficiency β β
β ββββββββββββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββ€ β
β β Last Used: Never β Last: Spring 2023 β Last: Never β β
β β Ready: β
β Ready: β
β Ready: β
β β
β ββββββββββββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββ€ β
β β Top Partners: β Top Partners: β Top Partners: β β
β β β’ UBS β β’ PostFinance β β’ Migros β β
β β β’ Credit Suisse β β’ Raiffeisen β β’ Coop β β
β β β’ Swiss Re β β’ Swisscom β β’ Die Post β β
β ββββββββββββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββ€ β
β β Industry Trend: β Industry Trend: β Industry Trend: β β
β β π₯ Hot (35% YoY) β π Rising (28%) β β¨ Emerging (42%) β β
β ββββββββββββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββ€ β
β β [β
In Your List] β [+ Add to List] β [+ Add to List] β β
β ββββββββββββββββββββββ΄βββββββββββββββββββββ΄βββββββββββββββββββββ β
β β
β Recommendation: All three topics are complementary and could be combined into a β
β "Modern Enterprise Technology Stack" theme for a full-day event. β
β β
β [Close] [Add All to My List] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Interactive Elements
Search & Filter Section
- Search Bar: Real-time search across topic titles and descriptions
- Category Filter: Filter by technology category (Cloud, Security, AI/ML, etc.)
- Popularity Filter: Filter by vote count ranges (high/medium/low popularity)
- My Votes Filter: Show only topics in my voting list, or not in my list
- Sort Dropdown: Sort by votes, trending, alphabetical, newest, impact level
- Quick Filter Chips: One-click filters for common views
- Clear Filters: Reset all filters to default state
Topic Statistics Bar
- Total Topics: Count of all available topics
- Trending Count: Topics with increasing votes
- Your Selections: Count of topics added to voting list
- Most Voted: Highest voted topic name
Topic Cards (Grid View)
- Topic Badge: Visual indicators (π₯ trending, β¨ new, π popular, π suggested)
- Status Badge: βIN YOUR LISTβ for added topics
- Vote Bar: Visual representation of vote distribution
- Trending Indicator: Shows vote change this week
- Impact Level: High/Medium/Low with rationale
- Top Requesting Partners: Company names voting for this topic
- Last Used: When topic was last used in an event
- View Details: Navigate to Topic Detail Screen
- Add/Remove Button: Toggle topic in voting list
Topic List (List View)
- Compact Row: Single-line topic summary
- Sort Indicators: Visual sort direction
- Quick Actions: Inline add/remove buttons
- Hover Details: Expanded info on hover
Comparison Basket
- Topic Chips: Selected topics for comparison
- Clear Button: Remove all from comparison
- Compare Button: Open comparison modal
Comparison Modal
- Side-by-Side View: Compare up to 3 topics
- Metrics Comparison: Votes, impact, trends, partners
- Recommendation: AI-generated insights on topic combinations
- Bulk Actions: Add all compared topics to voting list
Functional Requirements Met
- FR8: Partner topic influence through comprehensive voting interface
- Topic Discovery: Browse all available topics with search and filtering
- Vote Distribution: Visual representation of partner voting patterns
- Community Insights: See what other partners are requesting
- Informed Decisions: Comparison tools and detailed metrics
- Voting Integration: Seamless add/remove from voting list
User Interactions
For Partners (Primary Users)
- Browse All Topics: View complete catalog of available topics
- Search Topics: Find topics by keyword across titles and descriptions
- Filter by Category: Narrow down by technology category
- Filter by Popularity: See most/least voted topics
- View My Selections: Filter to show only topics in voting list
- Sort Topics: Order by votes, trending, impact, or alphabetically
- Quick Filter: Apply predefined filters (Popular, Trending, New, Your Interests)
- View Topic Details: Navigate to full topic detail screen
- Add to Voting List: Add topic to personal voting rankings
- Remove from List: Remove topic from voting list
- Compare Topics: Select multiple topics for side-by-side comparison
- View Comparison: Open comparison modal with detailed metrics
- Add All Compared: Bulk add compared topics to voting list
- Toggle View Mode: Switch between grid and list view
- Load More: Paginate through large topic catalog
- See Vote Distribution: Understand community voting patterns
- View Trending: See topics gaining votes this week
- Check Similar Topics: Warning for similar/duplicate topics
- Monitor Voting Progress: Track βMy Votes: 5/10β limit
For Organizers (View-Only)
- View Partner Interests: See which topics partners are voting for
- Analyze Vote Distribution: Understand partner priorities
- Monitor Trending Topics: Track growing interest areas
- Review New Suggestions: See partner-suggested topics under review
Common Interactions
- View Topic History: See when topic was last used
- See Top Requesting Partners: Companies interested in each topic
- View Industry Trends: Understand broader market interest
- Check Topic Impact: Understand business value proposition
Technical Notes
Component Structure
- AllTopicsBrowserScreen.tsx: Main browser screen component
- TopicSearchBar.tsx: Search with autocomplete
- TopicFilters.tsx: Filter panel with multi-criteria filtering
- TopicStatsBar.tsx: Summary statistics display
- TopicGrid.tsx: Grid layout for topic cards
- TopicList.tsx: List layout for topic rows
- TopicCard.tsx: Individual topic card component (grid view)
- TopicRow.tsx: Individual topic row component (list view)
- ComparisonBasket.tsx: Topic comparison selection bar
- ComparisonModal.tsx: Side-by-side topic comparison
- VoteDistributionBar.tsx: Visual vote percentage bar
- QuickFilters.tsx: Predefined filter chips
State Management
- Local State:
- View mode (grid/list)
- Search query
- Active filters
- Comparison basket (selected topics for comparison)
- Sort order
- Zustand Store:
- Partnerβs current voting list
- View preferences (grid/list default)
- Filter preferences
- React Query: Server state for topics
allTopicsquery: Cached for 5 minutesvotingSessionquery: Cached for 10 minutespartnerVotesquery: Cached for 2 minutes (frequently updated)topicStatsquery: Cached for 5 minutes
API Integration
- All Topics:
GET /api/v1/topics/voting-session/{sessionId}/all-topics - Search Topics:
GET /api/v1/topics/search?query={text}&sessionId={id} - Filter Topics:
GET /api/v1/topics/voting-session/{sessionId}/all?category={cat}&popularity={range} - Add to Votes:
POST /api/v1/partners/{partnerId}/topics/votes/add - Remove from Votes:
DELETE /api/v1/partners/{partnerId}/topics/votes/{topicId} - Compare Topics:
POST /api/v1/topics/compare(with topicIds array) - Topic Details:
GET /api/v1/topics/{topicId}/details - Partner Votes:
GET /api/v1/partners/{partnerId}/topics/votes/current
Performance Optimization
- Virtual Scrolling: For large topic lists (>50 topics)
- Debounced Search: 300ms debounce on search input
- Lazy Loading: Load more topics on scroll
- Image Optimization: Lazy load partner company logos
- Memoization: Memoize filter and sort calculations
- Optimistic Updates: Immediate UI update when adding/removing topics
Caching Strategy
- Topic List: 5-minute cache with background refresh
- Partner Votes: 2-minute cache (can change frequently)
- Vote Statistics: 5-minute cache
- Search Results: 10-minute cache per query
- Cache Invalidation: Invalidate on vote submission, topic addition/removal
Accessibility
- Keyboard Navigation: Full keyboard access to all features
- ARIA Labels:
aria-label="Search topics"on search inputaria-label="Add {topicName} to voting list"on add buttonsaria-label="Filter by {category}"on filter dropdownsaria-label="Compare selected topics"on compare button
- Focus Management: Proper focus handling for modals and dropdowns
- Screen Reader Support:
- Topic card data announced completely
- Vote counts announced as β15 partners, 31 percentβ
- Filter changes announced
- Color Contrast: WCAG 2.1 AA compliant (4.5:1 minimum)
- Alt Text: Partner logos include alt text
API Requirements
Consolidated APIs (Story 1.21)
Note: This wireframe now uses the consolidated Topics APIs from Story 1.21. The browsing functionality benefits from unified filtering and the voting-session resource consolidation.
Initial Page Load APIs
-
GET /api/v1/topics?filter={βvotingSessionIdβ:β{sessionId}β}&sort=-votes&page=1&limit=20
- Query params:
filter={"votingSessionId":"{sessionId}"}, sort=-votes, page=1, limit=20, include=votes - Returns: Paginated list of all votable topics with comprehensive data
- Response:
{ topics: [{ id, title, description, category, voteCount, votePercentage, trending, isNew, lastUsedAt, impact, topRequestingPartners }], pagination, totalCount } - Used for: Initial topic list display
- Consolidation: Main topics list with voting session filter replaces specialized voting-session/all-topics endpoint
- Query params:
-
GET /api/v1/topics/voting-sessions/{sessionId}/votes?partnerId={partnerId}
- Query params:
partnerId={partnerId} - Returns: Partnerβs current topic voting list for this session
- Response:
{ topicIds: [], votingLimit: 10, currentCount: 5 } - Used for: Mark topics as βIN YOUR LISTβ and show vote count
- Consolidation: Votes managed through voting-session resource
- Query params:
-
GET /api/v1/topics/statistics?groupBy=votingSession&sessionId={sessionId}
- Query params:
groupBy=votingSession, sessionId={sessionId} - Returns: Overall voting statistics for the session
- Response:
{ totalTopics: 47, trendingCount: 8, mostVotedTopic: { id, title, voteCount } } - Used for: Topic statistics bar
- Consolidation: Statistics endpoint with voting session grouping
- Query params:
-
GET /api/v1/topics/statistics?groupBy=category
- Query params:
groupBy=category - Returns: Available topic categories with counts
- Response:
{ categories: [{ name, count, description }] } - Used for: Populate category filter dropdown
- Consolidation: Statistics endpoint with category grouping
- Query params:
Action APIs
Topic Management
-
GET /api/v1/topics?filter={βvotingSessionIdβ:β{sessionId}β,βtitleβ:{β$containsβ:β{text}β}}&limit=20
- Triggered by: Search input (debounced)
- Query params:
filter (votingSessionId, title/description contains text), limit=20 - Returns: Matching topics with search relevance
- Used for: Real-time topic search
- Consolidation: Search integrated into main list endpoint with $contains filter operator
-
GET /api/v1/topics?filter={βvotingSessionIdβ:β{sessionId}β,βcategoryβ:β{cat}β}&sort={field}&page={n}
- Triggered by: Filter changes, sort changes, load more
- Query params:
filter (votingSessionId, category, popularity range), sort, page, limit - Returns: Filtered and sorted topic list with pagination
- Used for: Apply filters and sorting
- Consolidation: Unified filtering via JSON filter parameter - no new endpoints needed
-
PUT /api/v1/topics/voting-sessions/{sessionId}/votes
- Triggered by: [+ Add to My List] button
- Payload:
{ partnerId, addTopics: [topicId] } - Returns:
{ success: true, currentVoteCount: 6, limit: 10 } - Side effects: Adds topic to partnerβs voting list
- Used for: Add topic to voting list
- Consolidation: Votes managed through voting-session resource
-
PUT /api/v1/topics/voting-sessions/{sessionId}/votes
- Triggered by: [β Added] button (toggle off)
- Payload:
{ partnerId, removeTopics: [topicId] } - Returns:
{ success: true, currentVoteCount: 4 } - Side effects: Removes topic from voting list
- Used for: Remove topic from voting list
- Consolidation: Same endpoint as add, different payload
-
GET /api/v1/topics/{topicId}?include=votes,history,insights
- Triggered by: [View Details] button
- Query params:
include=votes,history,insights - Returns: Complete topic information with comprehensive data
- Opens: Topic Detail Screen
- Used for: Navigate to topic details
- Consolidation: Single endpoint with ?include parameter
Topic Comparison
-
GET /api/v1/topics?filter={βidsβ:{β$inβ:[id1,id2,id3]}}&include=votes,insights
- Triggered by: [Compare] button
- Query params:
filter (ids in array), include=votes,insights, context (sessionId) - Returns: Side-by-side comparison data with AI recommendation
- Response:
{ topics: [{ id, title, votes, impact, trend, topPartners, lastUsed, industryTrend }], aiRecommendation: "text" } - Used for: Open comparison modal
- Consolidation: Use main list endpoint with ID filter for comparison data
-
PUT /api/v1/topics/voting-sessions/{sessionId}/votes
- Triggered by: [Add All to My List] in comparison modal
- Payload:
{ partnerId, addTopics: [id1, id2, id3] } - Returns:
{ success: true, addedCount: 3, currentVoteCount: 8 } - Used for: Bulk add compared topics to voting list
- Consolidation: Same voting-session votes endpoint handles bulk operations
Filtering & Sorting
-
GET /api/v1/topics/trending?type=community&sessionId={sessionId}&timeframe=week
- Triggered by: [Trending π] quick filter
- Query params:
type=community, sessionId={sessionId}, timeframe=week - Returns: Topics with increasing votes in this session
- Response:
{ topics: [], voteChanges: [{ topicId, changeThisWeek }] } - Used for: Show trending topics
- Consolidation: Trending endpoint with session filter
-
GET /api/v1/topics?filter={βvotingSessionIdβ:β{sessionId}β,βisNewβ:true}&sort=-createdAt
- Triggered by: [New Topics β¨] quick filter
- Query params:
filter (votingSessionId, isNew=true), sort=-createdAt - Returns: Recently added topics for this session
- Response:
{ topics: [], addedDates: [] } - Used for: Show new topics
- Consolidation: Filter on main list for new topics
-
GET /api/v1/topics/ai-suggestions?context={βpartnerIdβ:β{partnerId}β,βpurposeβ:βrecommendationsβ}
- Triggered by: [Your Interests] quick filter
- Query params:
context (partnerId, partner industry/preferences, purpose=recommendations) - Returns: Topics matching partnerβs profile with AI-powered matching
- Response:
{ topics: [], matchReasons: [], confidence: [] } - Used for: Personalized topic recommendations
- Consolidation: AI suggestions endpoint with partner context for personalization
Pagination
- GET /api/v1/topics?filter={βvotingSessionIdβ:β{sessionId}β}&page={page}&limit=20
- Triggered by: [Load More] button or infinite scroll
- Query params:
filter (votingSessionId), page={page}, limit=20 - Returns: Next batch of topics with pagination metadata
- Used for: Load additional topics
- Consolidation: Standard pagination on main list endpoint
Navigation Map
Primary Navigation Actions
-
β Back to Topic Voting button β Navigate to Topic Voting Screen
- Type: Full page navigation
- Target: story-6.4-topic-voting.md
- Context: Returns to main voting interface
-
My Votes: 5/10 indicator β Shows voting progress
- Type: Informational (no navigation)
- Tooltip: βYou can vote for up to 10 topicsβ
- Visual: Progress bar overlay on hover
-
Search input β Filters topic list
- Type: In-place filtering
- Debounced: 300ms delay
- No navigation, updates topic grid
-
[Clear Filters] button β Resets all filters
- Type: In-place action
- Clears: Search, category, popularity, my votes, sort
- No navigation
-
Category dropdown β Filters by category
- Type: In-place filtering
- Updates topic grid
- No navigation
-
Popularity dropdown β Filters by vote count
- Type: In-place filtering
- Options: All, High (>20 votes), Medium (10-20), Low (<10)
- No navigation
-
My Votes dropdown β Filters by voting status
- Type: In-place filtering
- Options: All, In My List, Not in My List
- No navigation
-
Sort dropdown β Changes sort order
- Type: In-place sorting
- Options: Votes (desc), Trending, Alphabetical, Newest, Impact
- No navigation
-
Quick filter chips β Applies predefined filters
- Type: In-place filtering
- Filters: Most Popular, Trending, New Topics, Your Interests
- No navigation
-
[Grid/List] toggle β Switches view mode
- Type: In-place view change
- Toggles between grid cards and compact list
- No navigation
Topic Card Actions
-
Topic card click (title) β Navigate to Topic Detail Screen
- Type: Full page navigation
- Target: story-2.2-topic-detail-screen.md
- Context: Topic ID passed for detailed view
-
[View Details] button β Navigate to Topic Detail Screen
- Type: Full page navigation
- Same as topic card click
-
[+ Add to My List] button β Adds topic to voting list
- Type: In-place action
- API call:
POST /api/v1/partners/{partnerId}/topics/votes/add - Visual feedback: Button changes to [β Added]
- Updates: My Votes count
- No navigation
-
[β Added] button β Removes topic from voting list
- Type: In-place action (toggle off)
- API call:
DELETE /api/v1/partners/{partnerId}/topics/votes/{topicId} - Visual feedback: Button changes to [+ Add to My List]
- Updates: My Votes count
- No navigation
-
Vote bar hover β Shows detailed vote breakdown
- Type: Tooltip
- Displays: Exact vote count, percentage, partner names
- No navigation
-
Trending indicator click β Shows trend details
- Type: Tooltip
- Displays: Vote change this week, trend direction
- No navigation
-
Impact level hover β Shows impact explanation
- Type: Tooltip
- Displays: Impact rationale and business value
- No navigation
-
Top Requesting Partners hover β Shows partner details
- Type: Tooltip
- Displays: Full partner list with vote details
- No navigation
-
Last Used info hover β Shows usage history summary
- Type: Tooltip
- Displays: Event name, date, speaker, attendance
- No navigation
Comparison Actions
-
Topic card checkbox (compare) β Adds to comparison basket
- Type: In-place selection
- Max: 3 topics
- Updates: Comparison basket bar
- No navigation
-
Comparison basket chip click β Removes from comparison
- Type: In-place action
- Updates: Comparison basket
- No navigation
-
[Clear] button (basket) β Clears all comparisons
- Type: In-place action
- Empties comparison basket
- No navigation
-
[Compare] button β Opens comparison modal
- Type: Modal overlay
- API call:
POST /api/v1/topics/compare - Opens: Comparison modal with side-by-side view
- No screen navigation
-
[Add All to My List] button (modal) β Bulk adds topics
- Type: Modal action
- API call:
POST /api/v1/partners/{partnerId}/topics/votes/bulk-add - Updates: My Votes count, topic card buttons
- Closes: Modal after action
- No screen navigation
-
[Close] button (modal) β Closes comparison modal
- Type: Modal dismiss
- Returns to browser screen
- No screen navigation
Pagination Actions
-
[Load More] button β Loads additional topics
- Type: In-place content expansion
- API call: Increments offset
- Appends: Additional topic cards
- No navigation
-
Scroll to bottom β Infinite scroll trigger
- Type: Auto-load
- Triggers: Load more topics
- No manual navigation
Error States & Redirects
-
No topics found β Shows empty state
- Type: In-page message
- Message: βNo topics match your filtersβ
- Action: [Clear Filters] button
- No navigation
-
Voting limit reached β Shows warning
- Type: Toast notification
- Message: βYouβve reached the maximum of 10 votesβ
- Action: Must remove a topic to add another
- No navigation
-
API error loading topics β Shows error state
- Type: In-page error
- Message: βUnable to load topicsβ
- Action: [Retry] button
- No navigation
-
Network error β Shows offline state
- Type: Banner notification
- Message: βYou are offline. Showing cached topics.β
- Shows: Last cached data
- No navigation
Responsive Design Considerations
Mobile Layout Changes
- Search Bar: Full-width with filters in expandable drawer
- Topic Cards: Single column, stacked vertically
- Comparison Basket: Fixed bottom bar with compact view
- Filters: Bottom sheet instead of inline dropdowns
- Sort: Accessible via top-right menu button
- View Toggle: Hidden (defaults to list view on mobile)
Tablet Layout Changes
- Topic Cards: Two-column grid
- Filters: Collapsible sidebar
- Comparison: Side-by-side in modal (2 topics max)
Mobile-Specific Interactions
- Swipe to Add: Swipe right on topic card to add to voting list
- Pull to Refresh: Refresh topic list
- Bottom Sheet Filters: Open filters in bottom sheet
- Sticky Search: Search bar sticky at top when scrolling
- FAB Button: Floating action button for compare (when topics selected)
Accessibility Notes
- Keyboard Navigation: All interactive elements accessible via Tab key
- ARIA Labels:
aria-label="Search topics by title or description"on search inputaria-label="Add {topicName} to your voting list"on add buttonsaria-label="Filter topics by category"on category filteraria-label="Compare {count} selected topics"on compare button
- Focus Indicators: 2px solid border on focused elements
- Screen Reader Support:
- Topic card data fully described
- Vote counts announced: β15 partners, 31 percentβ
- Filter changes announced with aria-live regions
- βAdded to voting listβ announcements
- Color Contrast: All text meets WCAG 2.1 AA standards (4.5:1 minimum)
- Alt Text: Icons include descriptive alt text
- Skip Links: βSkip to topic listβ for keyboard users
- ARIA Live Regions: Vote count updates announced automatically
State Management
Local Component State
viewMode: βgridβ | βlistβ - Current view modesearchQuery: string - Current search textfilters: object - Active filters (category, popularity, myVotes)sortBy: string - Current sort fieldsortOrder: βascβ | βdescβ - Sort directioncomparisonBasket: TopicId[] - Topics selected for comparisonisComparisonModalOpen: boolean - Comparison modal state
Global State (Zustand Store)
voting.currentVotes: TopicId[] - Partnerβs current voting listvoting.votingLimit: number - Maximum votes allowed (10)topics.viewPreferences: object - Userβs saved view modetopics.filterPreferences: object - Last used filtersauth.currentUser: User - Current authenticated userauth.partnerId: string - Current partner ID
Server State (React Query)
allTopics: All votable topics (cached for 5 minutes)partnerVotes: Partnerβs current votes (cached for 2 minutes)topicStats: Voting statistics (cached for 5 minutes)votingSession: Current voting session info (cached for 10 minutes)categories: Topic categories (cached for 1 hour)
Real-Time Updates
- Vote Count Updates: Live update when other partners vote
- New Topic Added: Real-time notification when organizers add topics
- Voting Limit Warning: Live check when approaching limit (8/10, 9/10)
- Trending Topics: Periodic refresh (every 5 minutes) for trending indicators
Edge Cases & Error Handling
- Empty Topic List: Show βNo topics available for voting yetβ
- No Search Results: Show βNo topics match β{query}ββ with suggestion to clear search
- Voting Limit Reached: Disable [+ Add] buttons, show tooltip βRemove a topic to add anotherβ
- All Topics Already Added: Show βYouβve added all available topics to your voting listβ
- Comparison Limit: Disable checkbox after 3 topics selected
- Duplicate Add Attempt: Show toast βTopic already in your voting listβ
- Loading State: Display skeleton cards while data loads
- API Error: Show error banner with [Retry] button
- Network Timeout: Show cached data with βViewing offline versionβ banner
- Slow Network: Show progress indicators for >2 seconds
- Invalid Session: Redirect to voting session selection or show βVoting session has endedβ
- Permission Denied: Show βYou must be a partner to vote on topicsβ
Change Log
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-10-04 | 1.0 | Initial wireframe creation for All Topics Browser Screen | Sally (UX Expert) |
Review Notes
Open Questions
- Vote Limit: Should the 10-vote limit be configurable per partner tier (Gold=10, Silver=5)?
- Topic Suggestions: Should partners be able to suggest new topics directly from this screen?
- Historical Data: Should we show how partnerβs past votes influenced event planning?
- Collaboration: Should partners see which specific partner companies voted for each topic?
- Categories: Should we support multi-select category filtering?
- Save Searches: Should partners be able to save favorite filter combinations?
Design Iterations
- v1.0: Initial comprehensive design with grid/list views and comparison feature
- Consider adding: Topic relationship graph showing connections between related topics
- Consider adding: Vote history timeline showing when votes were cast
- Consider adding: Partner influence score impact per topic (how much your vote matters)
Stakeholder Feedback
- Pending review from partners for comparison feature usefulness
- Need to validate voting limit (10 topics) with historical voting patterns
- Confirm anonymity level for βTop Requesting Partnersβ (company names vs. anonymous)
- Validate filter options with partner user research