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
/streamspage 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 β
- Backend API
- Expose
/api/streams/liveand/api/streams/historyendpoints 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).
- Expose
- 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.
- Create new module
- 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.
- 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.
- Permissions
- Define new permission nodes (
editor:streams.view,editor:streams.manage) controlling read vs. manage actions.
- Define new permission nodes (
- 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|historyscaffold; 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.mdanddocs/gameserver/features/twitch-landing-embed/plan.md - Dashboard module patterns:
app/dashboard/src/modules/events,app/dashboard/src/modules/roles