Files
movies-diary/CONTEXT.md
Gabriel Kaszewski 96ce5f7d26 docs: domain glossary (16 terms) + ADR-0002 unified social identity
CONTEXT.md expanded with Movie, Person, Review, Rating, WatchMedium,
Watchlist, Goal, WrapUp, User, Follow, Feed, WatchEvent, Import,
ImportProfile, SocialIdentity. ADR-0002 documents wrap-k_ap decision.
2026-07-10 15:29:31 +02:00

3.7 KiB
Raw Blame History

Movies Diary

A personal movie diary that tracks what you watch, when, and what you thought about it. Supports federation via ActivityPub.

Language

Movie: A film in the catalog, identified by title and release year. Optionally linked to an external metadata provider (e.g. TMDb) for enrichment. One Movie record is shared across all users — "Blade Runner (1982)" exists once regardless of how many people review it. Avoid: Film entry, title record

Person: Someone involved in making a movie — actor, director, crew member. Sourced from an external metadata provider and enriched with biographical data. Linked to Movies through cast/crew credits. Not a User — Person is movie-industry people only. Avoid: Celebrity, artist, talent

Review: A single record of watching a movie — captures the rating, optional comment, when it was watched, and how it was watched. Avoid: Diary entry, watch, log entry

Rating: A 15 whole-star score given to a movie in a Review. No half-stars, no zero. Avoid: Score, grade, stars (as a noun for the value itself)

WatchMedium: The channel through which a movie was watched: Cinema, Streaming, TV, PhysicalMedia, Download, MediaServer, or Other. Avoid: Source, format, venue, platform

Watchlist: A user's collection of movies they intend to watch. Each item is a simple bookmark — no priority or ordering. A movie leaves the watchlist implicitly when reviewed, or explicitly when removed. Avoid: Queue, backlog, to-watch list

Goal: A yearly target a user sets — e.g. "watch 50 movies in 2025." Progress is tracked automatically as reviews are logged. Currently only supports movie-count goals, but the model is designed for other goal types in the future. Avoid: Challenge, resolution, target

WrapUp: A generated summary report of viewing activity over a date range — statistics, trends, highlights, top directors/actors/genres. Can be personal (one user) or global (all users). Generated asynchronously. Shown to users as "Year in Review." Avoid: Stats page, recap, summary

User: A registered account with a username, email, and profile (display name, bio, avatar, banner). Can be Standard or Admin. Avoid: Account, member, profile (as a synonym for the whole User)

SocialIdentity: The uniform identifier for anyone involved in a social interaction — either a local User or a remote federated actor. Social commands and queries operate on SocialIdentity so the domain never branches on local vs remote. Avoid: Actor, participant, social user

Follow: A social relationship where one user subscribes to another's activity. Always requires acceptance by the target user. Works identically for local and federated (ActivityPub) users. Once accepted, the followed user's reviews appear in the follower's Feed. Avoid: Subscribe, connect, friend

Feed: A chronological timeline of reviews from users you follow — both local and federated. The main social surface of the app. Avoid: Timeline, activity stream, home

WatchEvent: An automatically detected viewing reported by an external source — currently Jellyfin and Plex via webhook, but conceptually any system that can report "this person watched this movie" (e.g. a cinema ticket service). Arrives in a pending state; the user confirms it (creating a Review) or dismisses it. Avoid: Playback event, webhook event, auto-import

Import: Bulk ingestion of reviews from an external file — Letterboxd CSV, IMDb CSV, or a generic JSON format. The user uploads a file, column mappings are applied, and reviews are created in batch. Avoid: Upload, migration, sync

ImportProfile: A saved set of column-to-field mappings for an Import. Reusable across imports and shareable between users. Avoid: Template, mapping preset, import config