Skip to content

Movie Taste Tracker

Field Value
Status Active (personal / couple tool)
Type Web app
Repo dmoniker/movies
Local path ~/Projects/movie-taste-app

Description

A browser-based movie journal for two people (Darcy + wife): log what you've watched, build taste profiles over time, and get personal and shared recommendations for date night. Catalog and metadata come from TMDB; all ratings and library state live in localStorage on the device — no accounts, no server-side user database.

Built as a lightweight alternative to spreadsheets or generic watch-list apps when the goal is understanding taste (genres, directors, decades) and finding overlap, not just tracking titles.

Key features

  • Dual profiles — separate tabs for each person plus a shared recommendations view.
  • Library — mark seen, rate 1–10, or save want to see; search TMDB by title or director.
  • Taste radar — Recharts visualizations for genre, actor, director, and decade preferences per profile.
  • Recommendations — TMDB discover/similar candidates scored from rating history; optional Grok re-ranking for personalized “why you’ll like this” copy when XAI_API_KEY is set.
  • Dismiss feedback — tag and note why a recommendation missed; rules feed back into future batches.
  • Import / export — JSON backup of ratings, cached movie metadata, and dismissals; Netflix viewing-history CSV import (matches titles on TMDB, marks movies as seen for the active profile, skips TV episodes).
  • Privacy posture — API keys stay server-side (Next.js route proxies); personal watch data never leaves the browser unless exported.

Tech stack

  • Next.js 16 (App Router) + React 19 + TypeScript
  • Tailwind CSS 4, Recharts, lucide-react
  • TMDB API (required) — catalog, search, discover, movie details
  • x.ai Grok (optional) — recommendation re-ranking via /api/grok/rerank
  • Deploy: Vercel-ready (same pattern as projects/happy-body web stack); env vars TMDB_API_KEY, optional XAI_API_KEY

Data model (browser)

Data Storage
Ratings & seen status localStorage (movieRatings)
Cached TMDB movie details localStorage (movieCache)
Dismissed recommendations localStorage (recDismissals)
Grok rec cache localStorage (bounded, ~20 keys)

Use Export in the app header to back up; Import → App backup (JSON) restores. Netflix CSV import merges into the active profile without wiping existing data.

Raw sources

  • Repo README: ~/Projects/movie-taste-app/README.md

Known issues / limits

  • No multi-device sync — data is per-browser unless you export/import JSON.
  • Netflix import — title matching is heuristic; some Netflix-only or oddly titled films may not resolve on TMDB.
  • Shared tab — Netflix import must be run from a Darcy or Wife tab (not Both).