Skip to main content

Purpose

The Creator Dashboard Service aggregates time-series metrics from the analytics pipeline and presents them to creators via a read-heavy API. It also owns payout settings and is responsible for surfacing real-time updates via WebSocket (live view count during active streams, moderation decision alerts). It is a read-aggregation service — it does not own the underlying engagement or billing data.

Responsibilities

ResponsibilityDetail
Analytics aggregationReads pre-aggregated metrics from the analytics time-series store (TimescaleDB / ClickHouse): views, watch time, likes, shares, subscriber growth, and completion rate — queryable by time range and content item.
Revenue reportingSurfaces per-creator ad revenue, subscription revenue share, and payout history by reading payout records from the Billing Engine’s output tables.
Real-time metricsSubscribes to user.engagement.events via WebSocket forwarding for live view count updates on active content. Creator dashboard displays near-real-time counts without polling.
Payout settingsCreators configure preferred payout currency (NGN or USD) and payment method (Paystack bank account or Stripe details). Payout settings stored in Postgres; read by the Payout Service at payout time.
Audience insightsAggregated (anonymised) audience data: geographic distribution, device breakdown, top content by completion rate, subscriber growth curve.
Content libraryLists the creator’s uploaded content with status, view count, and earnings per item.

API Surface

MethodEndpointAuthDescription
GET/api/v1/creator/analytics/overviewBearer (Creator)Summary metrics: views, watch time, subscribers, revenue
GET/api/v1/creator/analytics/content/{contentId}Bearer (Creator)Per-content analytics
GET/api/v1/creator/analytics/audienceBearer (Creator)Aggregated audience demographics
GET/api/v1/creator/revenueBearer (Creator)Revenue breakdown and payout history
GET/api/v1/creator/contentBearer (Creator)Content library with status, views, earnings
GET/api/v1/creator/payout-settingsBearer (Creator)Fetch payout configuration
PUT/api/v1/creator/payout-settingsBearer (Creator)Update payout currency and payment method
WS/ws/creator/live-metricsBearer (Creator)WebSocket stream for real-time view counts

Data Owned

StoreContent
Postgrespayout_settings (creator_id, currency, paystack_account_id, stripe_account_id), payout_history (read from Billing Engine output)
TimescaleDB / ClickHouseTime-series analytics: content_metrics (content_id, creator_id, period, views, watch_time_s, likes, shares, completions)

Kafka Topics

TopicAction
user.engagement.eventsConsumed — drives real-time WebSocket metric updates to creator dashboard
engagement.subscription.changedConsumed — updates subscriber count in real-time dashboard
payment.processedConsumed — triggers revenue dashboard refresh

Failure Behaviour

FailureBehaviour
Analytics store unavailableDashboard API returns a 503 for analytics endpoints. Content library and payout settings remain available (Postgres-backed). No streaming impact.
WebSocket disconnectionClient reconnects and receives the latest state. Real-time counts may show a brief gap — counts are eventually consistent.
Creator Dashboard unavailableNo impact on viewer streaming, content upload, or moderation pipelines.

Build docs developers (and LLMs) love