Skip to content

Repository files navigation

StreamFinder

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.

Setup

Requires Node.js 20 or later (Next.js 16 minimum).

  1. Get a free TMDB API key: https://www.themoviedb.org/settings/api (use the v3 "API Key").

  2. 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_key in .env.local.

  3. Install and run:

    npm install
    npm run dev

    Open http://localhost:3000.

    Windows shortcut: from PowerShell, run .\run.ps1 instead — it checks Node, copies .env.example to .env.local if missing, verifies TMDB_API_KEY, installs dependencies, and starts the dev server in one go.

Features

  • 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.

Scripts

  • npm run dev — start the dev server
  • npm run build — production build
  • npm test — run the Vitest suite

How it works

  • Server Components fetch TMDB through lib/tmdb.ts, so the API key stays on the server. The /api/search route 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 by localStorage; the WhereToWatch panel reads it and refetches when it changes.
  • The watchlist lives in localStorage (per-browser, no accounts).

Notes

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.

About

Find where any movie or TV show streams in your country — search TMDB and see which platforms (Netflix, Disney+, Prime, etc.) carry each title. Built with Next.js (App Router), TypeScript, Tailwind CSS, and the TMDB / JustWatch API.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages