Local web app to browse what's available on your Netflix, Disney+, HBO Max, and Ziggo TV subscriptions in the Netherlands. Data from TMDB.
Personal, non-commercial project. Not affiliated with or endorsed by Netflix, Disney+, HBO Max, Ziggo, or TMDB. All service names, logos, and title artwork are the property of their respective owners.
Streaming services' recommendation engines chase what's popular right now. The long tail — decades-old films, foreign gems, one-hit-wonder TV, anything with fewer than ten thousand ratings — sits buried underneath. whatson exposes your services' entire catalog as a flat, filterable grid, tuned for deliberate digging rather than passive scrolling.
- Random sort by default, with a per-day seed — every visit resurfaces different corners of the catalog, but the order stays stable within a session so you don't lose your place.
- Votes range filter — cap min and max rating counts to carve out the obscure-but-signal (e.g. 10–1,000 ratings: widely unknown yet rated enough that the score means something).
- Year slider across 1900 onwards — pin down "the 70s" or any arbitrary era when you're in that mood.
- Genre AND mode — intersect multiple genres instead of unioning them, so "Horror + Comedy" actually returns the rare crossovers rather than everything in either bucket.
- Watchlist and seen marks — kept locally in your browser, so you can build up your own discovery queue.
- Get a free TMDB API Read Access Token at https://www.themoviedb.org/settings/api (v4 auth, the long JWT-style one).
- Copy
.env.exampleto.envand paste the token intoTMDB_ACCESS_TOKEN. - Install dependencies:
npm install - Start the app:
Then open http://localhost:5173. The server syncs the catalog from TMDB automatically on first run (takes under a minute); refreshes on a 24h timer after that, plus whenever you click "Refresh" in the UI.
npm run dev
npm run dev— start server + Vite dev server with HMRnpm run build— production buildnpm start— run the production server (serves built client)
- Data is stored in
server/data/whatson.db(SQLite). Delete the file to start fresh. - Availability data is sourced from JustWatch via TMDB and can lag by a day or two.
- The "HBO Max" provider is resolved by name at sync time, so rebrands (Max ↔ HBO Max) are handled automatically.
- Provider deep links are best-effort. The server scrapes TMDB's watch page for JustWatch click-out URLs, follows the affiliate redirect chain, strips tracking query params (which break some apps' deep-link routing), and falls back to the streamer's on-site search if the resolved URL doesn't end up on the streamer's domain.
MIT — code only. Title metadata, posters, provider logos, and catalog data are © TMDB and the respective services; this project fetches them through the TMDB API under their standard attribution terms.
