Find where to stream any movie or TV show. Search across TMDB, see ratings, cast, and trailers, and check which streaming platforms (Netflix, Disney+, Prime, etc.) carry the title in your region.
Built with Next.js (App Router), TypeScript, Tailwind CSS, and the TMDB API.
Requires Node.js 20 or later (Next.js 16 minimum).
-
Get a free TMDB API key: https://www.themoviedb.org/settings/api (use the v3 "API Key").
-
Copy the env example and add your key:
- macOS/Linux/Git Bash:
cp .env.example .env.local - Windows PowerShell:
Copy-Item .env.example .env.local
Then set
TMDB_API_KEY=your_keyin.env.local. - macOS/Linux/Git Bash:
-
Install and run:
npm install npm run dev
Open http://localhost:3000.
Windows shortcut: from PowerShell, run
.\run.ps1instead — it checks Node, copies.env.exampleto.env.localif missing, verifiesTMDB_API_KEY, installs dependencies, and starts the dev server in one go.
- Multi-search — find movies AND TV shows in one query.
- Where to watch — each detail page shows which streaming services carry the title in your selected country (38 markets supported, covering most of TMDB's watch-provider data).
- Region selector — switch country from the navbar; choice persists.
- Trailers — embedded YouTube via TMDB video data.
- Watchlist — save titles (movies and TV) to a local list that persists
across visits (browser
localStorage; no account needed). - Dark theme by default.
npm run dev— start the dev servernpm run build— production buildnpm test— run the Vitest suite
- Server Components fetch TMDB through
lib/tmdb.ts, so the API key stays on the server. The/api/searchroute proxies multi-search (movies + TV) for the "Load more" button, and/api/providers/[type]/[id]proxies the region-specific watch-provider lookup so the key never reaches the browser. - Region is a client context (
RegionProvider) backed bylocalStorage; theWhereToWatchpanel reads it and refetches when it changes. - The watchlist lives in
localStorage(per-browser, no accounts).
Availability metadata is sourced from TMDB / JustWatch. The app does not host or stream any video itself — playback is limited to YouTube trailers. Streaming catalogs vary by country and may change without notice.