Amend DESIGN.md for the title detail surface #142

Closed
opened 2026-08-23 19:40:08 +01:00 by naps62-yolo · 0 comments
Owner

DESIGN.md is silent on poster art, cast, ratings, external links and trailers,
and §2 lists "actor/director following" as a non-goal. Every issue in the Rich
metadata milestone depends on a section that says what this surface is, in the
same way #117 amended the document before the TV work landed.

Add §9.6 "Title detail", and amend §9.2 for the enriched search row. Record the
decisions taken during planning:

  • TMDB is the only metadata source. The rating shown anywhere is TMDB's
    vote_average with its vote_count. No OMDb, no IMDb or Rotten Tomatoes
    scores — they would need a second upstream, a second key and a second thing
    that can be down.
  • Images are hotlinked from image.tmdb.org. The API returns TMDB path
    fragments, never URLs; the browser composes the URL and chooses the size.
    There is no image proxy and no image cache in the service.
  • Rich detail is not persisted. It is served through arr-meta's existing
    24-hour response cache. The single exception is poster_path,
    backdrop_path and vote_average, stored on movies and series and
    written by the daily metadata refresh, so library views render without a
    TMDB call.
  • Cast is the top 10 billed, each with profile photo, actor name and
    character name, linking out to that person's TMDB page. This does not
    contradict §2: nothing about a person is stored, tracked or searched on. The
    non-goal is following people, not naming them.
  • External links are TMDB always, IMDb for movies, TVDB for series — all
    three from ids the app already holds — plus a Rotten Tomatoes search link,
    which is a query URL and not a resolved title page.
  • Trailers resolve on click. TMDB's search responses carry no videos, so a
    trailer key costs a detail call. Rendering a chip on every row and resolving
    the one that is clicked keeps that cost at one call, and the 24h cache makes
    a repeat free.
  • A movie detail page exists at /movies/{id}, mirroring the shape the
    series detail view (#129) takes. The release deck becomes a section of it and
    /movies/{id}/releases keeps resolving.
  • The library view is a poster grid with a list toggle, the list keeping
    the derived-status columns §4.2 built it around.

Non-goals to state explicitly in the section, because they are the adjacent
scope most likely to creep: no watch providers, no recommendations or similar
titles, no collections, no person pages inside the app, no review text.

Document only. No code changes in this issue.

DESIGN.md is silent on poster art, cast, ratings, external links and trailers, and §2 lists "actor/director following" as a non-goal. Every issue in the Rich metadata milestone depends on a section that says what this surface is, in the same way #117 amended the document before the TV work landed. Add §9.6 "Title detail", and amend §9.2 for the enriched search row. Record the decisions taken during planning: - **TMDB is the only metadata source.** The rating shown anywhere is TMDB's `vote_average` with its `vote_count`. No OMDb, no IMDb or Rotten Tomatoes scores — they would need a second upstream, a second key and a second thing that can be down. - **Images are hotlinked** from `image.tmdb.org`. The API returns TMDB path fragments, never URLs; the browser composes the URL and chooses the size. There is no image proxy and no image cache in the service. - **Rich detail is not persisted.** It is served through arr-meta's existing 24-hour response cache. The single exception is `poster_path`, `backdrop_path` and `vote_average`, stored on `movies` and `series` and written by the daily metadata refresh, so library views render without a TMDB call. - **Cast** is the top 10 billed, each with profile photo, actor name and character name, linking out to that person's TMDB page. This does not contradict §2: nothing about a person is stored, tracked or searched on. The non-goal is following people, not naming them. - **External links** are TMDB always, IMDb for movies, TVDB for series — all three from ids the app already holds — plus a Rotten Tomatoes *search* link, which is a query URL and not a resolved title page. - **Trailers resolve on click.** TMDB's search responses carry no videos, so a trailer key costs a detail call. Rendering a chip on every row and resolving the one that is clicked keeps that cost at one call, and the 24h cache makes a repeat free. - **A movie detail page exists** at `/movies/{id}`, mirroring the shape the series detail view (#129) takes. The release deck becomes a section of it and `/movies/{id}/releases` keeps resolving. - **The library view is a poster grid** with a list toggle, the list keeping the derived-status columns §4.2 built it around. Non-goals to state explicitly in the section, because they are the adjacent scope most likely to creep: no watch providers, no recommendations or similar titles, no collections, no person pages inside the app, no review text. Document only. No code changes in this issue.
naps62-yolo added this to the Rich metadata milestone 2026-08-23 19:40:08 +01:00
naps62-yolo added the area/infradifficulty/easytype/chorephase/6-tv labels 2026-08-23 19:40:08 +01:00
naps62-yolo added phase/5-ui and removed phase/6-tv labels 2026-08-23 19:42:54 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: yolo/arr#142