movie collection manager

Prism

A self-hosted movie collection manager with a React web UI and a REST API. Edition-aware release scoring, full release decision explainability, and a native Radarr v3 API so Overseerr and Jellyseerr connect without modification.

Port :8282 Go 1.25 Postgres Radarr v3 API MIT

What Prism does

Library management

Full TMDB integration for search, metadata, posters, and collection tracking. Per-movie monitoring with automatic grab on missing. Calendar view of upcoming releases. Library stats with drill-down by quality tier, genre, decade, and indexer performance.

Edition-aware scoring

Prism's parser recognizes 15 canonical editions: Theatrical, Director's Cut, Extended, Ultimate, IMAX, Criterion, 4K Remaster, and others. Set a preferred edition per movie and matching releases score higher during the decision pass.

Release decision explainability

Every release on the manual search page shows exactly which custom formats matched, which quality tier it landed in, and whether it was blocked by the title match, quality floor, or a blocklist entry. Debugging takes seconds, not mysteries.

Radarr v3 API compatibility

Prism exposes a Radarr v3 compatible API at /api/v3/. Point Overseerr, Jellyseerr, Homepage, Home Assistant, LunaSea, or any other tool with a Radarr integration at Prism — it connects without modification.

Automation

Automatic RSS sync, auto-import with rename and hardlink support. Import lists from TMDB, Trakt, Plex watchlists, MDBList, and custom URL lists. Library Sync — compare your media server library against Prism and import the delta.

TRaSH Guides presets

Ships with TRaSH Guides custom format presets preinstalled and scored per their recommendations. A fresh install gets solid 1080p and 2160p releases without manual configuration. All formats are editable.

Screenshots

React 19 + TypeScript UI embedded in the Go binary.

Library — movie grid with poster art and quality badges
Manual search — per-release scoring breakdown
Library stats — quality, genre, decade, indexer performance

Advanced features

Radarr v3 adapter

Lives in internal/api/v3/. A compatibility layer over Prism's native API that maps Radarr's endpoint shapes onto Prism's internal types. Known to work with Overseerr, Jellyseerr, Homepage, and Home Assistant.

Custom format engine

Compatible with Radarr's custom format engine — existing formats import cleanly. The decision engine shows exactly why each release was grabbed or skipped: which formats matched, which quality tier it hit, and what blocked it if anything did.

Import conflict detection

Warns about dimension regressions — HDR lost, audio downgrade — before grabbing. The conflict checker runs in the auto-import pass and in the manual search modal so you always know what you're replacing.

Radarr migration

Imports from a running Radarr instance in one pass. Open Settings → Import, enter the Radarr URL and API key, preview, and select categories. Supported: quality profiles, libraries, indexers, download clients, and movies with monitoring state.

Getting started with Prism

Standalone Docker or full stack via beacon-stack/stack.

docker
docker run -d \
  --name prism \
  -p 8282:8282 \
  -v /path/to/config:/config \
  -v /path/to/movies:/movies \
  ghcr.io/beacon-stack/prism:latest

Open http://localhost:8282 — Prism generates an API key on first run. Find it in Settings → App Settings.

Environment variables

VariableDefaultDescription
PRISM_SERVER_PORT8282Web UI and API port
PRISM_DATABASE_DSNPostgres DSN (required)
PRISM_AUTH_API_KEYautoAPI key; autogenerated on first run if unset
PRISM_PULSE_URLPulse control-plane URL (optional)
PRISM_LOG_LEVELinfodebug, info, warn, error
PRISM_LOG_FORMATjsonjson or text