Story 1.18: Historical Archive Browser - Wireframe
Story: Epic 1, Story 18
5. Historical Archive Browser
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Back BATbern Archive: 20+ Years of Knowledge β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββ BROWSE BY YEAR βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β 2025 2024 2023 2022 2021 2020 2019 2018 2017 2016 [Show All Years] β β
β β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ 2025 EVENTS ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β ποΈ Spring Conference 2025 May 15, 2025 β β β
β β β Cloud Native Architecture 8 Speakers β’ 247 Attendeesβ β β
β β β β β β
β β β Featured Presentations: β β β
β β β β’ Kubernetes Best Practices - P. Muller β 4.8 β’ β¬ 523 β β β
β β β β’ Container Security - S. Kim β 4.9 β’ β¬ 891 β β β
β β β β’ Zero Trust Architecture - T. Weber β 4.7 β’ β¬ 445 β β β
β β β β β β
β β β [View Event] [Browse Presentations] [Photo Gallery] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β ποΈ Summer Workshop 2025 July 20, 2025 (Upcoming)β β β
β β β AI/ML in Production Registration Open β β β
β β β β β β
β β β Confirmed Speakers: β β β
β β β β’ Deep Learning at Scale - Dr. A. Mueller β β β
β β β β’ MLOps Best Practices - L. Chen β β β
β β β β’ More speakers being confirmed... β β β
β β β β β β
β β β [Register Now] [View Details] [Set Reminder] β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ EXPLORE BY TOPIC βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β π Topic Evolution Over Time β β
β β β β
β β Kubernetes ββββββββββββββββββββ 142 presentations β β
β β DevOps βββββββββββββββββββ 134 presentations β β
β β Security ββββββββββββ 89 presentations β β
β β Cloud Native ββββββββββββ 78 presentations β β
β β AI/ML βββββββββ 67 presentations β β
β β Microservices ββββββββ 56 presentations β β
β β Data Eng. ββββββ 45 presentations β β
β β β β
β β [View Topic Timeline] [Compare Topics] [Download Stats] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ SPEAKERS HALL OF FAME ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Most Presentations Highest Rated Most Downloaded β β
β β 1. Thomas Weber (15) 1. Sara Kim (4.9) 1. Peter Muller (3,421) β β
β β 2. Sara Kim (12) 2. Anna Lopez (4.8) 2. Sara Kim (2,987) β β
β β 3. Peter Muller (12) 3. Marc Baum (4.8) 3. Thomas Weber (2,654) β β
β β β β
β β [View All Speakers] [Speaker Directory] [Become a Speaker] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
API Requirements
ARCHITECTURAL PRINCIPLE:
Historical events are accessed through the Event Management Service (/api/v1/events) with status filters (archived, completed), not through a separate archive API. This ensures:
- Single source of truth for all events
- Consistent API patterns across the application
- Simplified architecture (no separate archive service)
- Public read access controlled via API Gateway authorization
Initial Page Load APIs
When the Historical Archive Browser screen loads, the following APIs are called to provide the necessary data:
-
TODO: Statistics API - Year selector
- Future endpoint:
GET /api/v1/events/statistics/by-yearor similar - Returns: List of years with event counts, earliest year, most recent year
- Used for: Populate year selector with available years
- Current workaround: Query events grouped by year client-side or hardcode known years
- Future endpoint:
-
GET /api/v1/events?filter={βyearβ:2025,βstatusβ:[βarchivedβ,βupcomingβ]}&include=speakers,sessions,analytics&sort=-eventDate&limit=20
- Implementation: Story 1.15a.1 consolidated Events API with resource expansion (AC2, AC4)
- Returns: Events for selected year with all event card data in a single consolidated call
- Response includes per event:
- Event core data: title, date, topic, status
- speakers: Speaker count and list
- sessions: Session data with ratings
- analytics: Attendee count, download counts, rating statistics, photos count
- Used for: Populate events list for selected year with complete card details
- Performance: Reduced from 21 API calls to 1 (95% reduction for 20 events - was 1 archive call + 20 summary calls)
- Caching: 15-minute Caffeine in-memory cache with automatic invalidation (AC15-16)
- Response Time: <50ms cached, <500ms uncached with all includes (P95)
ARCHITECTURE NOTE - No Separate Archive API:
Historical events are accessed through the Event Management Service using status filters, not a separate archive API.
Previous approach:
- Separate
/api/v1/archive/eventsendpoint - 1 call per event to GET /api/v1/events/{eventId}/summary (20 additional calls for 20 events)
- Total: 21 API calls for initial page load
Current consolidated approach (Story 1.15a.1):
Uses Event Management API with ?include=speakers,sessions,analytics to fetch all event card data in one call. This provides:
- Page load time: ~90% faster (from ~5s to <500ms for 20 events)
- Single loading state for entire yearβs events
- Instant event card rendering with all details
- Reduced database load (1 optimized query vs 21 separate queries)
- Better caching efficiency (single cache entry vs 21 entries, 15-minute TTL)
- Atomic data consistency (all events at same point in time)
- In-memory caching: <50ms cached response time with Caffeine
-
TODO: Statistics API - Topic usage
- Future endpoint:
GET /api/v1/topics/statistics(enhance existing topic backlog endpoint) - Query params: minPresentations (5), sortBy (count)
- Returns: Topic statistics with presentation counts, year ranges, growth trends, popularity over time
- Used for: Populate βExplore by Topicβ section with topic bars
- Current workaround: Aggregate content data client-side or defer this feature
- Future endpoint:
-
TODO: Statistics API - Speakers hall of fame
- Future endpoint:
GET /api/v1/speakers/statistics/hall-of-fame - Query params: categories (most-presentations, highest-rated, most-downloaded)
- Returns: Top speakers in each category with counts, ratings, download stats, profile links
- Used for: Populate βSpeakers Hall of Fameβ section
- Current workaround: Aggregate speaker data client-side or defer this feature
- Future endpoint:
-
GET /api/v1/content?filter={βeventIdβ:β{eventId}β,βfeaturedβ:true}&sort=-rating&limit=3
- Query params: Filter by eventId and featured flag, sort by rating, limit to 3
- Returns: Featured presentations with title, speaker, rating, download count
- Used for: Display top presentations for each event card
- Consolidated: Uses Story 1.20 unified search (was /api/v1/archive/featured-presentations)
- Benefit: Reuses content search infrastructure with filtering
Action APIs
Event Interactions
-
GET /api/v1/events/{eventId}/details
- Returns: Full event details with agenda, all presentations, speakers, venue, statistics, photos, documents
- Used for: Load event detail view when clicking [View Event]
-
GET /api/v1/content?filter={βeventIdβ:β{eventId}β}&sort={sortBy}&limit=50
- Query params: Filter by eventId, sort by rating/downloads/date, limit to 50
- Returns: All presentations for event with metadata, files, ratings
- Used for: Navigate to presentations list from [Browse Presentations]
- Consolidated: Uses Story 1.20 unified search (was /api/v1/events/{eventId}/presentations)
- Benefit: Consistent search/filter/sort across all content queries
-
GET /api/v1/events/{eventId}/photos
- Query params: limit (100), quality (thumbnail|full)
- Returns: Event photos with URLs, captions, timestamps, photographer credits
- Used for: Load photo gallery from [Photo Gallery]
-
GET /api/v1/events/{eventId}/attendees
- Query params: includeProfile (false), limit (500)
- Returns: Attendee list with names, organizations, attendance status (privacy-aware)
- Used for: Display attendee list from [Attendee List]
Upcoming Event Actions
-
POST /api/v1/attendees/{userId}/reminders
- Payload:
{ eventId, reminderDate, reminderType: "email|push", advanceNotice: "1-day|1-week|custom" } - Response: Reminder created, confirmation, scheduled time
- Used for: Create event reminder from [Set Reminder] button
- Payload:
-
GET /api/v1/events/{eventId}/registration-status
- Returns: Registration availability, pricing, capacity, early-bird status, prerequisites
- Used for: Check registration status before navigating to registration
Topic Analysis
-
TODO: Statistics API - Topic timeline
- Future endpoint:
GET /api/v1/topics/{topicName}/timeline - Query params: includeEvents (true)
- Returns: Topic evolution over time with yearly counts, associated events, trend analysis, related topics
- Used for: Display topic timeline from [View Topic Timeline]
- Future endpoint:
-
TODO: Statistics API - Topic comparison
- Future endpoint:
GET /api/v1/topics/compare - Query params: topics: [], startYear, endYear
- Returns: Comparison data with trend lines, correlation analysis, speaker overlap, presentation counts
- Used for: Compare topics from [Compare Topics]
- Future endpoint:
-
TODO: Statistics API - Topic export
- Future endpoint:
GET /api/v1/topics/export - Query params: format (csv|pdf|json), includeTimeline (true)
- Returns: Download URL for topic statistics, expiration timestamp
- Used for: Download statistics from [Download Stats]
- Future endpoint:
Speaker Discovery
-
GET /api/v1/speakers/directory
- Query params: sortBy (presentations|rating|downloads), filter, limit (50)
- Returns: Complete speaker directory with profiles, statistics, expertise, availability
- Used for: Navigate to speaker directory from [View All Speakers]
-
GET /api/v1/speakers/{speakerId}/profile
- Returns: Speaker profile with bio, presentations, ratings, topics, contact info
- Used for: View speaker profile from speaker name click
-
GET /api/v1/speakers/{speakerId}/presentations/history
- Query params: limit (20)
- Returns: All presentations by speaker with events, dates, ratings, downloads
- Used for: View speakerβs presentation history
Year Navigation
-
GET /api/v1/events?filter={βyearβ:{year},βstatusβ:[βarchivedβ,βcompletedβ]}&include=speakers,sessions,analytics
- Implementation: Story 1.15a.1 consolidated Events API (AC2, AC4)
- Query params: year, status filter
- Returns: Events for newly selected year with all event card data
- Used for: Load events when year is changed in selector
- Consolidated: Uses Event Management API (was /api/v1/archive/events)
- Caching: 15-minute Caffeine cache, <50ms cached response
-
TODO: Statistics API - Year range statistics
- Future endpoint:
GET /api/v1/events/statistics/year-range - Query params: startYear, endYear
- Returns: Event summary statistics across year range
- Used for: Show multi-year statistics when expanding year selector
- Future endpoint:
Downloads & Bookmarks
-
GET /api/v1/content/{contentId}/download
- Returns: Download URL, file metadata, expiration timestamp
- Used for: Download presentation files
- Consolidated: Story 1.20 standard download endpoint (was /api/v1/presentations/{presentationId}/download)
- Benefit: Consistent download pattern across all content types
-
POST /api/v1/content/{contentId}/reviews (with bookmark metadata)
- Payload:
{ type: "bookmark", userId, metadata: { eventId, notes } } - Response: Bookmark created, confirmation
- Used for: Bookmark event or presentation for later
- Consolidated: Reviews endpoint can handle bookmarks (was POST /api/v1/attendees/{userId}/bookmarks)
- Benefit: Unified engagement tracking
- Payload:
-
DELETE /api/v1/content/{contentId}/reviews/{reviewId}
- Response: Bookmark removed
- Used for: Remove bookmark
- Consolidated: Standard review deletion (was DELETE /api/v1/attendees/{userId}/bookmarks/{bookmarkId})
- Benefit: Consistent deletion pattern
Search & Filter
-
GET /api/v1/content?filter={}&facets=year,speaker,topic&include=event
- Query params:
filter={"$or":[{"title":{"$contains":"query"}},{"tags":{"$in":["topic"]}}]}, year, speaker, minRating, sortBy, facets - Returns: Search results with events, presentations, speakers matching criteria, facet aggregations
- Used for: Search archive content
- Consolidated: Story 1.20 unified search (was /api/v1/archive/search)
- Benefit: Single search API for archive, discovery, and all content
- Query params:
-
GET /api/v1/events?filter={βyearβ:{year},βtopicβ:{topic}}&page=1&limit=50
- Query params: Filter by year, topic, speaker count, attendee count, min rating
- Returns: Filtered event list
- Used for: Filter events by criteria
- Consolidated: Standard events API with filtering (was /api/v1/archive/events/filter)
- Benefit: Reuses events infrastructure with rich filters
Navigation Map
Primary Navigation Actions
-
β Back button β Navigate back to previous screen
- Usually
Current Event Landing(story-2.4-current-event-landing.md) - Or homepage
- Or referrer page
- Usually
-
Page title (BATbern Archive) β Refreshes archive browser
- Reloads current year
- Resets filters
- Scrolls to top
-
Year selector button (2025, 2024, etc.) β Changes selected year
- Loads events for selected year
- Updates URL parameter
- Updates event list
- No screen navigation
-
[Show All Years] button β Expands year selector
- Shows all available years
- Scrollable year list
- Multi-select option
- No screen navigation
Event Card Actions
-
Event card click β Navigate to
Event Detail Screen- Full event information
- Complete agenda
- All presentations
- Photos and resources
-
[View Event] button β Navigate to
Event Detail Screen- Same as event card click
- Full event view
- Detailed information
-
[Browse Presentations] button β Navigate to
Event Presentations List Screen- Filtered presentation list
- Sortable by rating/downloads
- Search within event
- Download options
-
[Photo Gallery] button β Navigate to
Event Photo Gallery Screen- Grid view of photos
- Lightbox display
- Download options
- Social sharing
-
[Attendee List] button β Navigate to
Event Attendee List Screen- Attendee directory
- Organization breakdown
- Privacy-aware display
- Networking connections
-
Featured presentation click β Navigate to
Presentation Detail Screen- Presentation view/download
- Speaker information
- Rating and comments
- Related presentations
-
Speaker name click (P. Muller) β Navigate to
Speaker Profile Screen- Speaker bio
- All presentations
- Expertise areas
- Contact options
-
Rating display (β 4.8) β Shows rating details tooltip
- Rating breakdown
- Comment count
- Rating distribution
- No navigation
-
Download count (β¬ 523) β Shows download statistics
- Download trend
- Popular formats
- Recent downloads
- No navigation
Upcoming Event Actions
-
[Register Now] button β Navigate to
Event Registration Screen(story-2.4-event-registration.md)- Registration form
- Ticket selection
- Payment processing
- Confirmation
-
[View Details] button β Navigate to
Upcoming Event Detail Screen- Event information
- Confirmed speakers
- Registration status
- Schedule preview
-
[Set Reminder] button β Opens reminder configuration modal
- Date/time selector
- Notification type
- Advance notice options
- Creates reminder
- No screen navigation
Topic Exploration Actions
-
Topic bar click (Kubernetes) β Navigate to
Topic Timeline Screen- Topic evolution visualization
- Year-by-year breakdown
- Associated events
- Top presentations
-
[View Topic Timeline] button β Navigate to
Topic Timeline Visualization- Interactive timeline
- Trend analysis
- Event correlation
- Speaker contributions
-
[Compare Topics] button β Navigate to
Topic Comparison Screen- Multi-topic comparison
- Trend lines
- Speaker overlap
- Popularity metrics
-
[Download Stats] button β Triggers statistics download
- Format selection
- Generates export
- Downloads file
- No screen navigation
Speaker Hall of Fame Actions
-
Speaker name click in hall of fame β Navigate to
Speaker Profile Screen- Speaker details
- Presentation history
- Statistics
- Contact information
-
[View All Speakers] button β Navigate to
Speaker Directory Screen- Complete speaker list
- Search and filter
- Sort options
- Profile previews
-
[Speaker Directory] button β Navigate to
Speaker Directory Screen- Same as View All Speakers
- Searchable directory
- Advanced filters
-
[Become a Speaker] button β Navigate to
Speaker Application Form- Application wizard
- Profile creation
- Topic selection
- Submission
Secondary Navigation (Data Interactions)
-
Event date hover β Shows event timeline tooltip
- Event duration
- Days until/since
- Related events
- No navigation
-
Topic presentation count hover β Shows topic details
- Yearly breakdown
- Top speakers
- Recent trends
- No navigation
-
Hall of fame metric hover β Shows detailed statistics
- Breakdown by year
- Rating distribution
- Download sources
- No navigation
Event-Driven Navigation
-
New archive year added β Updates year selector
- Adds new year option
- Updates event counts
- May show notification
- No automatic navigation
-
Bookmark added β Shows confirmation
- Success notification
- Bookmark count updated
- No automatic navigation
-
Download started β Shows download progress
- Progress indicator
- Cancel option
- Completion notification
- No automatic navigation
-
Search results returned β Updates display
- Filtered results shown
- Result count updated
- Highlights matches
- No automatic navigation
-
Reminder created β Shows confirmation
- Success notification
- Reminder details
- Calendar sync option
- No automatic navigation