Skip to content

Latest commit

 

History

166 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Phrasic logo

Phrasic

A provider-neutral, browser-based now-playing display.

Turn live playback metadata into a responsive visual with artwork, attribution, long-text motion, accessible status updates, and honest connection states.

CI status Latest release

Get started · Use the display · Wiki · Contributing

Phrasic demonstrating authorization, playback, artwork transitions, reconnecting, and long-title motion

Features

  • Spotify tracks and podcast episodes with provider attribution and destinations.
  • Native Local playback on supported x86-64 Linux and Windows hosts.
  • Responsive layouts from 320 through 7680 pixels.
  • Artwork transitions, long-text motion, and reduced-motion behavior.
  • Explicit authorization, empty, unsupported, reconnecting, stale, and failure states.
  • Browser-owned Spotify PKCE credentials; no client secret or playback history on the host.

Providers

Provider Route Use
Spotify /spotify/ Live Spotify playback through browser-based PKCE.
Local /local/ Playback selected by the paired native service.
Fake Music /fake/ Memory-only development and demonstration provider.

Get started

You need a public HTTPS origin, a Spotify Developer application, and Docker or Nix. Register the exact callback:

https://display.example/spotify/

Create config.json:

{
  "spotify": {
    "clientId": "public-client-id",
    "redirectUri": "https://display.example/spotify/"
  }
}

Run the published image:

docker pull alsilawr/phrasic:latest

docker run --rm --publish 127.0.0.1:8080:8080 \
  --mount type=bind,src="$(pwd)/config.json",dst=/app/config.json,readonly \
  alsilawr/phrasic:latest

Put the container behind the HTTPS-owning reverse proxy for your public origin. Do not add a Spotify client secret or publish the container directly on a public interface. See the deployment guide for the complete configuration and host boundary.

On x86-64 Linux, the Nix flake installs the hosted server and the complete Local playback path:

nix profile add github:alsi-lawr/phrasic
phrasic serve ./phrasic.toml

The same profile provides phrasic-host for hosted deployment. Set PHRASIC_CONFIG_PATH to the public JSON configuration before starting it. ARM64 Linux exposes the hosted-only package as github:alsi-lawr/phrasic#host.

Use the display

Open the setup URL, select Connect Spotify, and complete authorization in that browser profile:

https://display.example/spotify/?width=1920&setup=1

Then use the display without setup=1. Phrasic works in a browser window, web view, signage surface, stream compositor, or browser-source implementation.

Parameter Value
width An integer from 320 to 7680.
setup 1 to show setup controls.

For native playback, see Local playback.

Documentation

Phrasic displays metadata only. It does not play, record, or redistribute audio.

About

A provider-neutral, browser-only now-playing display with Spotify and an offline fake provider.

Topics

Resources

Contributing

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages