Skip to content

About

Self-hosted, fully local Movies & TV-Shows tracker

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

Film Hunter

A self-hosted, fully local movie & TV tracker built from your IMDb data export. Import your ratings and watchlist once, enrich everything with posters and metadata from TMDB, and browse a fast, dark, poster-first library in your browser — no accounts, no cloud, no ongoing IMDb dependency.

Features

  • Your library, offline — ratings and watchlist imported from IMDb CSV exports into a local SQLite database.
  • Rich metadata & posters — every title enriched via the TMDB API; posters cached locally.
  • Rate & curate in-app — set ratings (marks a title watched), add/remove watchlist entries, add notes and tags.
  • Discovery — New Releases, Upcoming, personalized For You recommendations, and search-and-add any TMDB title.
  • Insights — a stats dashboard: hours watched, rating distribution, genre/decade/director affinity, and "you vs. the crowd".
  • Fast search — full-text search across titles, directors, genres and plots, plus a ⌘K command palette.
  • Where to watch & trailers — streaming-provider availability and trailers inside each title's detail view.
  • Data tools — multi-format export (Excel, CSV, JSON, Letterboxd), backups, a library health report, and one-click re-enrichment.

Tech stack

Layer Choice
Runtime Node.js (built-in node:sqlite)
Backend Express
Database SQLite (file-based, local)
Frontend React + Vite
Styling Tailwind CSS
Metadata TMDB API

Prerequisites

  • Node.js 24+ (the app uses the built-in node:sqlite module).
  • A free TMDB API key — optional but recommended; without it the app still runs from CSV metadata, but posters, overviews, and discovery are disabled. Get one at https://www.themoviedb.org/settings/api.

Quick start

# 1. Install
npm install

# 2. Configure (optional but recommended)
cp .env.example .env          # then add your TMDB key

# 3. Add your IMDb exports
#    Drop ratings.csv and watchlist.csv into ./exported (or ./data)

# 4. Import + enrich
npm run import                # load CSVs into the local database
npm run enrich                # backfill posters & metadata from TMDB

# 5. Run
npm run dev                   # client at http://localhost:5173 (API on :3001)

The database is created automatically on first run, and CSVs in ./exported are imported on boot if the library is empty — so npm run dev works on its own too.

Scripts

Command Description
npm run dev API server + Vite dev client with hot reload
npm run import Import IMDb CSV exports into the database
npm run enrich Fetch TMDB metadata + posters (resumable)
npm run build Build the client for production
npm run serve Build, then serve client + API on one port
npm start Serve the API (and built client if present)

Documentation

Concise guides live in docs/:

Privacy

Everything runs on your machine. Your data lives in a local SQLite file, posters are cached locally, and the only external service is the TMDB API (used for metadata and discovery). No analytics, no accounts, no cloud sync.

About

Self-hosted, fully local Movies & TV-Shows tracker

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Contributors

Languages