back to the rack

reely

Movie night, decided by the room instead of by whoever holds the remote.

ver
1.1.8
lic
Apache 2.0
src
TypeScript
rel : release published
repository releases

reely is a self-hosted movie night picker for a Plex server. Everyone joins a room and swipes through the same shuffled list of your movies, right to like and left to pass. The moment two or more people like the same title, it is a match. It exists so that choosing a film stops taking longer than watching one.

It is a community continuation of MovieMatch by Luke Channings, picking up from its last release, in 2021, after which upstream development stopped.

What it does

no accounts
Join with a name and a room name. Anyone who enters the same room name swipes with you, and rooms expire six hours after the last swipe.
token stays home
All Plex traffic happens server-side. The token never reaches a browser and is redacted from every log line.
room filters
Genre, year, decade, rating and more. Anyone can apply a shortlist and the whole room swipes the same deck.
phone and desktop
An installable PWA with swipe gestures on mobile, and a two-pane layout with a live match sidebar on desktop.
local by default
No telemetry and no third-party services beyond a webfont request to Google Fonts on first load, which the service worker then caches for offline use.

Running

Two-pane desktop layout: an empty match sidebar on the left, a movie poster card centred with circular pass and like buttons either side
A room mid-swipe. Card stack center, match sidebar left.
A full-screen celebration reading It's a match over confetti, the matched poster centred above Keep swiping and Open in Plex buttons
Two swipes land on the same title.
A slide-over panel headed Build a shortlist, listing Genre, Year, Decade and Content Rating as addable fields
The filter panel, building a shortlist for everyone at once.

On a phone

Phone join screen with two fields, a display name and a room name, under the reely wordmark
Join
Phone view of the card stack with pass and like buttons below and a strip reserved for matches
Swipe
The match celebration filling a phone screen, poster centred over confetti
Match

Install

# minimum viable: point it at Plex and open port 8000
docker run -d \
  -e PLEX_URL=http://your-plex:32400 \
  -e PLEX_TOKEN=your-plex-token \
  -p 8000:8000 \
  cajunflavoredbob/reely:latest

A docker-compose.yml in the repository reads the token from a Docker secret instead of the environment, which keeps it out of process listings and docker inspect. Configuration can also come from a config.yaml.

Joining a room is claiming a name, so there is no gate against strangers by default. If the port is reachable from outside your household, turn on basic auth or keep it behind a VPN.

Specification

Version 1.1.8
License Apache 2.0
Language TypeScript, Node 26
Artifact Container image, amd64 and arm64
Requires A Plex Media Server with at least one movie library
Listens on Port 8000, HTTP and WebSocket on the same origin
External calls Your own Plex server, plus Google Fonts on first load
Source github.com/cajunflavoredbob/reely