Movie Diary
Track every movie you watch with dates, times, and notes. A personal Letterboxd-style watch diary inside Dayze.
What is Movie Diary?
Movie Diary is your personal film watch log. Every time you watch a movie, it gets recorded with the date, time, and any notes you want to add. Your diary lives at /[handle]/movies as a public page that showcases your film journey.
Entries are grouped by year and displayed in a chronological timeline. You can search, sort, and see stats like total watches, unique films, and total screen time. Each entry links to the movie's full profile page in the Dayze movie database. TV series use TV Diary; sleep dreams use Dream Diary.
Features
Watch Log
Log every movie you watch with the exact date and time. Your diary is a chronological timeline of your film life.
Duration & Total Time
See runtime for each film and your total watch time across all entries — know exactly how much time you've spent watching.
Search & Sort
Search your diary by movie title. Sort by newest or oldest first to find any watch entry quickly.
Arrange View
Switch between timeline list view and a poster grid. Grid is the default layout and your choice is remembered for future visits. Poster grid uses 1px gutters and square (non-rounded) tiles, matching the /movies catalog.
Edit watches (owner)
When you are logged in as the profile that owns the diary, use the pencil on a row to fix watched date/time, update notes, or delete the entry without leaving the page.
Year-by-Year Timeline
Entries are grouped by year with counters — see how many films you watched in 2024 vs 2025 at a glance.
Linked Profiles
Each diary entry links to the movie's full profile page with poster art, cast info, streaming links, and more.
To Watch + Watched
Your diary has two tabs: To Watch (queue) and Watched (history). Tell Dayze Agent “movies to watch: …” to add to the queue; “I watched …” logs a watch. On /movies when signed in, your To Watch strip appears above the catalog.
Dayze Agent
Say “movies to watch: The Odyssey (2026)” for the queue (status=want_to_watch), or “I watched …” for history (status=watched). Agent uses log_movie_watch. Pass the release year for new films. Missing catalog films are auto-added via Wikipedia/Wikidata or OMDb/IMDb when OMDB_API_KEY is set.
How to Use
Add to To Watch or log a watch
Ask Dayze Agent “movies to watch: …” to queue a film, or “I watched …” after you see it. You can mark To Watch items as watched from your diary.
Visit Your Diary
Go to dayze.com/[your-handle]/movies (To Watch / Watched tabs), or see your queue strip on /movies when signed in. Use the pencil on a watched row to change date, time, or notes.
Explore Stats
See total watches, unique films, and your watch history spanning across years.
Technical Details
Data: Stored in user_movie_log with status = watched or want_to_watch (queue rows have null watched_at)
Movies: Referenced from the notable_people entity database (entity_type = movie). Dayze Agent auto-adds missing films via OMDb/IMDb when OMDB_API_KEY is set (configured on Netlify production), then Wikipedia/Wikidata as fallback.
Posters: Thumbnails use notable_people.image_url. Wikipedia poster paths under upload.wikimedia.org must exist (wrong folder or filename → 404 → broken image in the browser). Resolve the real file with curl -sIL https://en.wikipedia.org/wiki/Special:Redirect/file/<FileName>.jpg or update image_url in Supabase for that slug.
Page: Server-rendered at /[handle]/movies with client-side search and sort
Poster grid UI: Grid mode uses gap-px (1px) and square poster cells (rounded-none), aligned with the notable-movies directory at /movies (components/entity/MovieGrid.tsx).
Live updates (owner): When Dayze Agent logs a film or you save edits in the pencil modal, the client dispatches dayze:movie-log-updated (constant DAYZE_MOVIE_LOG_UPDATED_EVENT in lib/brand/assistant.ts). The Movie Diary component refetches via GET /api/movies/diary/[handle] (service role — not the browser Supabase client, which cannot read user_movie_log under RLS) instead of calling router.refresh(), avoiding a whole-route server re-render.
Editing (owner): PATCH /api/movies/watch/[id] with session cookie updates watched_at and notes on your row only. If an events mirror exists (external_source=user_movie_log), event_date, event_time, and (when notes change) description are updated. No mirror row yet → only the diary table changes until you run the sync script below.
Delete (owner): DELETE /api/movies/watch/[id] is available from the Edit Watch modal and removes the diary row. If an events mirror exists for that entry, it is removed too.
Layout preference: Movie Diary supports List and Poster Grid modes. The default is Grid, and the selected mode is persisted in localStorage using dayze_movie_diary_layout.
Privacy: Your diary is public — anyone can see what you've watched and when
Calendar sync: New watches mirror to /calendar automatically (log_movie_watch, PATCH/DELETE). Filter Movies on the calendar. Backfill existing rows: npm run sync:movie-diary-events -- --handle=yourhandle. See Calendar docs.