Personal movie and streaming watch history database with AI-powered recommendations.
- Smooth UI and CRUD for your watch history
- Avoid cold starts with several import and ingest methods
- Keeps track of your watchlist
- Generates spot-on AI "watch next" recommendations
- Parses plain-text
movies.txtlist of titles and ratings - Integrates with your existing IMDb library
- Enriches each entry via the TMDB API (poster, metadata, cast, etc.)
- Stores everything in a local SQLite database
- Compare your taste to friends with a shareable fingerprint
- Built on SOTA web technologies
cp .env.example .env # replace with your API keys
npm install
Either use the built in IMDb importer or create a movies.txt at the root (title plus rating):
npm run build:data
The built-in parser for your movie.txt at the root is pretty forgiving and allows for some fuzzyness:
Parasite 8.0
The Sopranos S1 9.5
Dune: Part Two 2024 8.0
Fields: Title [Year] [Rating] [-- note]. Year and rating are optional.
We can call Gemini via GCP to generate "watch next" recommendations. The prompt will include your watched list plus ratings and split recommendations into classic movies and new releases. All results are matched against TMDB.
npm run build:ai
We create a shareable fingerprint across your library and ratings to then compare with other users.
Each rated movie is packed as 4 bytes across the TMDB ID, 1 byte for the rating and a version prefix. A compressed and b64 encoded buffer then produces a short fingerprint.
As two fingeprints are compared, cosine similarity on the shared ratings is calculated to Jaccard scale.
npm run dev # development
npm run build # production build
npm start # production server
npm test # unit tests
npm run test:e2e # Playwright smoke tests
The e2e suite is a minimal smoke test that boots the app, navigates the
key pages, and asserts nothing crashes. See AGENTS.md for details.
- Node >= 24
- TMDB API key
- Gemini API key
Licensed under GNU GPLv3