How rowkavdev/nowplaying works
NowPlaying is a Windows media-presence app: users configure one or more media servers, then the app polls playback and renders a local card and Discord Rich Presence. An optional privacy-filtered upload powers a public hosted README card; Spotify and a paired YouTube extension can supply card state. Setup, settings, diagnostics, artwork, and hosted-device management are supporting product workflows. The README documents the major capabilities; sampled source confirms card rendering, Discord publishing, provider polling, setup sign-in, and hosted-service handling, but does not expose every runtime wiring point.
Main entry points: presence.js Presence policy · card-pipeline.js Card pipeline · service.js Hosted service · settings-page-handler.js Settings page
Components 26
Setup and settings
- Setup wizard
src/setup-page-handler.js - Setup handlers
src/setup.js - Provider sign-in
src/setup-signin-handler.js - Settings page
src/settings-page-handler.js
Playback and media
- Provider adapters
src/providers - Multi-server polling
src/multi-server.js - Presence policy
src/presence.js - Spotify source
src/spotify-source.js - YouTube bridge
src/youtube-bridge.js - Artwork service
src/artwork-service.js
Cards and Discord
- Card pipeline
src/card-pipeline.js - SVG renderer
src/card.js - Local HTTP server
src/http-server.js - Discord controller
src/discord-controller.js
Hosted cards
- Hosted uploader
src/hosted-uploader.js - Hosted service
hosted/lib/service.js - Redis state
hosted/lib/redis.js - Hosted card handler
hosted/lib/app.js
Local operations
- System tray
src/tray-session.js - Status and diagnostics
src/status-page-handler.js - Logs page
src/logs-page-handler.js - App updater
src/auto-updater.js
Other components
- User
- Media servers
- Discord desktop app
- GitHub sign-in
Connections 25
- User → Setup wizard: configures
- Setup wizard → Setup handlers: saves draft
- Setup handlers → Provider sign-in: starts sign-in
- Provider sign-in → Media servers: authenticates
- Settings page → User: presents controls
- User → Settings page: changes settings
- Media servers → Provider adapters: serves sessions
- Multi-server polling → Provider adapters: polls playback
- Multi-server polling → Presence policy: updates state
- Spotify source → Presence policy: supplies playback
- YouTube bridge → Presence policy: supplies playback
- Presence policy → Card pipeline: provides presence
- Card pipeline → Artwork service: resolves artwork
- Card pipeline → SVG renderer: renders card
- Local HTTP server → Card pipeline: serves local card
- Presence policy → Discord controller: provides presence
- Discord controller → Discord desktop app: publishes activity
- Hosted uploader → Hosted service: pushes filtered state
- Hosted service → Redis state: reads and writes
- Hosted card handler → Hosted service: reads card state
- GitHub sign-in → Hosted service: authorizes account
- System tray → Settings page: opens settings
- User → Status and diagnostics: checks status
- User → Logs page: views logs
- App updater → User: offers updates