Skip to content

Feature Plan: Dashboard Streams Page ​

Summary ​

  • Owner: Freddi
  • Status: Delivery
  • Target Release: 2025.11.x
  • Backlog Entry: docs/agendas/uebliche.md β†’ πŸ“₯ Inbox (Streams-Seite in der App)

Goals ​

  • Provide staff and community managers with a dashboard view listing all currently live Übliche streamers plus recent activity history.
  • Enable filtering by rank, platform status (live, offline recently), and manual notes to coordinate outreach and promotions.
  • Surface key metrics (viewer count, stream title/category, uptime) and quick actions (feature on landing page, open Twitch, send Discord ping).

Scope ​

  • Build /streams page under dashboard modules showing live stream list, recent offline window, and quick filters.
  • Integrate with Twitch live status service cache to retrieve ranked streamer data (shared with landing page embed).
  • Allow staff to mark streamers as featured/unlisted and add notes/manual tags.
  • Show historical log (last 24h/7d) for stream sessions for trend tracking.
  • Out of scope: viewer analytics beyond Twitch-provided metrics and automated marketing actions (handled elsewhere).

Implementation Outline ​

  1. Backend API
    • Expose /api/streams/live and /api/streams/history endpoints returning normalized data (status, viewer count, rank tier, link IDs, notes).
    • Wire endpoints to cached live data with fallback to fresh Helix query when needed.
    • Support mutations for notes, manual feature toggles, and hide/unhide operations (with audit trail).
  2. Dashboard Module
    • Create new module streams (e.g., app/dashboard/src/modules/streams) with Pinia store managing live + history lists, filters, and mutations.
    • Page layout: top summary (count live, highest viewers, featured highlight), filter toolbar (rank tier, feature status, search), tables/cards for live + recent.
    • Provide inline actions: open Twitch, copy link, toggle featured/hide, push to landing embed shortlist.
  3. Real-time Updates
    • Implement polling cadence (e.g., 60s) with Expo backoff on errors; consider WebSocket subscription if HELIX events push available later.
    • Visual indicators for data freshness and manual refresh button.
  4. Notes & Tagging
    • Add free-form notes per streamer stored server-side with last editor/time.
    • Optional tags (campaign, region) with preset options stored in configuration.
  5. Permissions
    • Define new permission nodes (editor:streams.view, editor:streams.manage) controlling read vs. manage actions.
  6. UX Considerations
    • Responsive table-card hybrid for different screen sizes.
    • Accessibility: announce live status changes, ensure color contrast for badges.

Dependencies ​

  • Twitch Connect live status service caches and ranking logic.
  • Landing embed overrides (shared data) to keep featured/hide states consistent.
  • Dashboard module scaffolding and permission registry.
  • Audit log service for note/feature toggles.

Risks & Mitigations ​

  • Data consistency: Ensure single source of truth for featured/hide flags (shared service + cache invalidation).
  • Polling load: Reuse cached live data to avoid hitting Twitch rate limits; throttle manual refresh.
  • Notes spam: Limit note length, require permissions, and audit all changes.
  • UI clutter: Use tabs or accordions for history vs. live view to keep page manageable.

Validation Plan ​

  • Backend tests for API endpoints, permission enforcement, feature/hide updates.
  • Frontend unit/e2e tests for store actions, polling behavior, and UI states (no streams, multiple streams, error).
  • Manual QA covering feature toggle sync with landing page, history log accuracy, and permissions matrix.
  • Post-launch monitoring on endpoint latency/error rates and feedback loop from community managers.

Notes & Decisions ​

  • 2025-11-05 – Start with 60-second polling; revisit server-sent events once Twitch EventSub integration is available.
  • 2025-11-05 – History section targets last 24h with optional toggle to expand to 7d to keep payload small by default.
  • 2025-11-06 – Dashboard Streams page (Community) ships with /api/streams/live|history scaffold; showing linked accounts now, real-time Helix polling follows next.
  • 2025-11-06 – Twitch link now persists follower count & average viewers; Streams page surfaces both and respects per-player visibility opt-in.

References ​

  • Twitch live cache/service defined in docs/gameserver/features/twitch-connect/plan.md and docs/gameserver/features/twitch-landing-embed/plan.md
  • Dashboard module patterns: app/dashboard/src/modules/events, app/dashboard/src/modules/roles