docs(design): title detail and enriched search rows
This commit is contained in:
@@ -485,6 +485,11 @@ which skips to the manual-grab flow.
|
||||
There is never a moment where the user has to know whether they are searching or
|
||||
adding.
|
||||
|
||||
Result rows are enriched: a poster thumbnail and a rating, under the same rules
|
||||
as title detail (§9.6) — images hotlinked from path fragments, the rating being
|
||||
TMDB's `vote_average` with its `vote_count`. A trailer chip renders per row and
|
||||
resolves only when clicked (§9.6).
|
||||
|
||||
### 9.3 Manual search results
|
||||
|
||||
Radarr's manual search is unusable because the raw release name is the dominant
|
||||
@@ -540,6 +545,46 @@ notifying on everything and being muted within a week.
|
||||
|
||||
Not notified: grabs, searches, downloads starting or finishing, soft fails.
|
||||
|
||||
### 9.6 Title detail
|
||||
|
||||
One detail surface per kind: `/movies/{id}` and `/series/{id}` (#129). For a
|
||||
movie the release deck becomes a section of the page, and `/movies/{id}/releases`
|
||||
keeps resolving; series keeps its season-and-episode shape.
|
||||
|
||||
**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 — each 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. 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 (§8), so library views render without a TMDB call.
|
||||
|
||||
**Cast** is the top 10 billed — profile photo, actor name, 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 from
|
||||
ids the app already holds — plus a Rotten Tomatoes *search* link, which is a
|
||||
query URL, 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 one chip per title and resolving the
|
||||
one clicked keeps that cost at one call, and the 24h cache makes a repeat free.
|
||||
|
||||
**Library view.** A poster grid by default with a list toggle; the list keeps
|
||||
the derived-status columns §4.2 built it around.
|
||||
|
||||
Out of scope here, because they are the adjacent scope most likely to creep:
|
||||
watch providers, recommendations or similar titles, collections, person pages
|
||||
inside the app, review text.
|
||||
|
||||
## 10. Persistence
|
||||
|
||||
SQLite via `sqlx`, compile-time-checked queries, migrations in `arr-db`.
|
||||
|
||||
Reference in New Issue
Block a user