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_KEYis 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, optionalXAI_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
Related¶
- projects/happy-body — same Vercel + Next.js + Grok proxy deployment pattern on happybodygrok.com
- projects/personal-projects-wiki — this wiki; project ingested 2026-05-30
- tools-and-repos — repo link
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).