Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

70 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Image
GitHub Release Docker Pulls Discord

Decide what to watch on your Plex server by swiping cards based on your group's preferences.
Find a Movie or TV Show everyone wants to watch.
Self hosted with Docker. Available on the Unraid Community Apps store.





Main Features:

  • Modern and user friendly UI.
  • Quickly create or join a lobby as guest, or log in with Plex to filter out already watched items and integrate Watchlist.
  • Easy lobby joining via invite link or QR code.
  • Swipe with one or more friends.
  • Choose which libraries from your Plex server to include. Supports both Movies and TV Shows.
  • Optionally filter suggestions by Collections.
    Want to decide on which Christmas movie to watch? Select your Christmas collection and start a session!
  • Optionally start a session from your watchlist items.
  • Include or Exclude items based on Labels.
  • Users set preferences for Genre, Era and Language to narrow down the suggestions. Tap once to prefer, twice to exclude.
  • Flip cards over for details, Swipe left for Nope and right for Yes.
  • Optionally watch Trailers streamed straight from your Plex server.
  • Use your own custom logo on the landing page.
  • Admin panel for Settings and a Session History tab.
  • Choose between Random or Fixed suggestion order.
  • Three Session Modes:
    • Classic: Swipe until you have a match liked by everyone.
    • Timed: Swipe for chosen amount of time and vote for the best matches. Includes a tie breaker.
    • Match Target: Swipe until chosen amount of matches are made and vote on them. Includes a tie breaker.
  • Installable as PWA

Prerequisites

  • Docker and Docker Compose installed.
  • A running Plex server.
  • Suggested: Set up a reverse proxy for easy external access. (Make sure Websocket Support is enabled)

Quick Start

  1. Download the docker-compose.yml file from this repository. Edit the port, timezone and CORS_ORIGINS as needed.

Note

CORS_ORIGINS determines the allowed origins for accessing WTW
Add a comma-separated list of the allowed origins, e.g.:
e.g.: - CORS_ORIGINS=http://192.168.1.100:PORT,https://wtw.yourdomain.com

  1. Pull the latest image:
docker compose pull
  1. Start the container:
docker compose up -d

UNRAID

What to Watch on Plex is available on the Unraid Community Apps store as wtwp.
Click install and apply the default template.
Image

Make sure to add a CORS_ORIGINS environment variable.


Configuration

Plex Connection

  1. Access the app at http://localhost:3000. (or whichever port you mapped)
  2. Open the Admin Panel and set your Admin password.
  3. Enter your Plex http://IP:PORT and Plex Token
  4. Select your libraries ==> click on Save Settings ==> click on Refresh Cache and wait for the cache to be completed.

Allowed Domains

If you access this app through a custom domain or reverse proxy (e.g. wtw.mydomain.com), add it here. Only requests from allowed domains will be accepted. Equivalent to the CORS_ORIGINS environment variable, but managed at runtime without restarting the container. Setting either one is enough.

Optional Settings

  • Auto Refresh: Automatically refresh your cache at 3AM.
  • Custom Logo: Upload your custom logo to be used on the landing page.
  • Selection Limits: Choose how many Preferences and Exclusions users can set.

Note

Preferences are seen just that. If user1 sets preference for comedy and user2 sets preference for action then the app will first try to find items with both genres, and otherwise suggests a mix of both.
Exclusions are seen as hard limits. If a user marks horror in red, then no horror will be suggested at all.

  • Suggestion Order:
    • Random (suggestions appear randomly for each user).
    • Fixed (everyone gets the same suggestions in the same order).
  • Hard Filter Preferences: When enabled, preferred selections (green) strictly filter results. When disabled, preferences boost item priority but non-matching items may still appear.
  • Collections: Enable a collection picker for the host when creating a session. Only items from selected collections will be suggested.
  • Open in Plex Button: Enables a button on the match winner page to open the item in Plex. Only works by opening Plex in a browser tab.
  • Lobby QR Code: Display a QR code in the lobby for easy session joining.
  • Rating Display: Choose whether detail cards show Critic Rating, Audience Ratingor both.
  • Trailers: Add a Watch Trailer button to cards. Trailers are streamed from your Plex server. Three modes:
    • Off (default): no trailer button.
    • On: trailer button on detail cards
    • Voting only: trailer button appears only on the voting cards at the end of Timed and Match Target sessions β€” so swiping stays fast, but everyone can watch the trailers of the matched items before casting their final vote.

Tip

Missing trailers for certain items? Take a look at MTDP (Missing Trailer Downloader for Plex)

  • Label Restrictions: Include or Exclude items based on Plex labels.
  • PWA Customization: Customize the PWA name and icon.

🀝 Swiparr

WTWP was inspired by This post/Tweet.
Before starting development, I searched for existing options and came across Swiparr which already existed.
Swiparr at that point however did not support Plex so WTWP was created. The current version of Swiparr meanwhile does support Plex as well, but not all features are available in both apps. Here are the most important differences listed, so you can decide which is right for you:

(Optional) Feature WTWP Swiparr
Multi-media-server support ❌
(Plex only)
βœ…
(Jellyfin/Emby/Plex/TMDB)
TV show support βœ… ❌
Timed mode / Match-Target session modes + tie-breaker βœ… ❌
Trailer playback βœ… ❌
Plex oAuth login guard βœ… ❌
User Watched-items auto-exclusion βœ… ❌
Group preference questionnaire filters (genre/era/language) βœ… ❌
Plex Label filters βœ… ❌
Streaming-availability ("where to watch") filter ❌ βœ…
Runtime & minimum-rating filters ❌ βœ…
Sort by Trending / Popular ❌ βœ…
Customizable (logo + PWA name and icon) βœ… ❌
Suggest from Watchlist and/or Collections βœ… ❌
Suggest items not owned in library ❌ βœ…
Serverless deployment ❌
(self hosted only)
βœ…
(swiparr.com)

Feature sets evolve on both sides β€” please open an issue if anything here is out of date.


🩺 Troubleshooting Common Issues:

❌ Clients keep waiting on other users/other users are stuck on previous screen:

When you refresh the page, you'll most likely advance. This means your connection doesn't have websocket support.
If you are behind a reverse proxy, you need to enable websocket support. Nginx Example

❌ I can't start a session/ "No Media Found":

You first need to build a cache in settings. See step 4 above. Don't forget to click 'Save Settings' after connecting to Plex before refreshing cache.

❌ I get a blank page when accessing the webUI:

You need to add your hostname/ip to CORS_ORIGINS in the docker compose.


⚠️ Do you Need Help or have Feedback?

❀️ Support the Project

If you like this project, please ⭐ star the repository and share it with the community!


"Buy Me A Coffee"

About

Decide what to watch on your plex server by swiping cards based on your group's preferences

Resources

Stars

48 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages