You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current DetailView.tsx uses one shared component with three nearly identical inner functions. Each view shows the same boilerplate sections (info grid, acquisition, notes, condition) with minimal differentiation. The goal is dedicated, type-aware detail views that surface the fields that matter most for each medium.
Target layouts
Movies
Section
Fields
Hero
Cover art, title, original title
Release
Theatrical release date, runtime, year
Credits
Director, main cast (top 5)
Metadata
Genre, studio, formats owned
Ratings
Personal rating (★ /10), TMDB rating (if available)
Watching
Watch status, watch count, last watched
Description
Synopsis (from TMDB)
Tags
Tag chips
Acquisition
Date, price, source, condition
Games
Section
Fields
Hero
Cover art, title
Platform
Platform badge, physical/digital + store
Release
Release date, year
Credits
Developer, publisher
Metadata
Genre, age rating (PEGI/ESRB if available)
Personal
Rating (★ /10), completion status, hours played, last played
Description
Summary (from IGDB)
Tags
Tag chips
Acquisition
Date, price, source, condition
Music
Section
Fields
Hero
Cover art, title, artist
Release
Release date, year, format (CD/vinyl/other)
Metadata
Genre, label
Personal
Rating (★ /10), listen count, last played
Description
Synopsis/notes from MusicBrainz
Tags
Tag chips
Acquisition
Date, price, source, condition
New fields needed
Domain entities
Entity
New field
Type
Source
Movie
ReleaseDate
DateOnly?
TMDB release_date
Movie
Cast
string? (CSV or JSON)
TMDB credits, top 5 actors
Movie
ProviderRating
float? (0–10)
TMDB vote_average
Game
ReleaseDate
DateOnly?
IGDB first_release_date (epoch → date)
Game
AgeRating
string?
IGDB age ratings (e.g. "PEGI 16", "ESRB M")
Genres already exists on all three types. Studio, Director, Developer, Publisher, Label are already in the domain.
Provider-side changes
TMDB: Parse release_date → DateOnly, vote_average → float, credits.cast → top 5 actor names. Extend TmdbMovieDetail, TmdbMovieProvider, and MovieLookupResult.
Motivation
The current
DetailView.tsxuses one shared component with three nearly identical inner functions. Each view shows the same boilerplate sections (info grid, acquisition, notes, condition) with minimal differentiation. The goal is dedicated, type-aware detail views that surface the fields that matter most for each medium.Target layouts
Movies
Games
Music
New fields needed
Domain entities
MovieReleaseDateDateOnly?release_dateMovieCaststring?(CSV or JSON)MovieProviderRatingfloat?(0–10)vote_averageGameReleaseDateDateOnly?first_release_date(epoch → date)GameAgeRatingstring?Provider-side changes
release_date→DateOnly,vote_average→float,credits.cast→ top 5 actor names. ExtendTmdbMovieDetail,TmdbMovieProvider, andMovieLookupResult.first_release_date(unix timestamp) →DateOnly,age_ratings→ display string. ExtendIgdbGameDetail,IgdbGameProvider, andGameLookupResult.date→DateOnly. ExtendMusicBrainzAlbum,MusicBrainzProvider, andMusicLookupResult.Frontend
DetailView.tsxwith three dedicated components:MovieDetail.tsx,MusicDetail.tsx,GameDetail.tsxInfoRow,StatusPill,TagChip,CoverPreviewprimitivesDetailViewwrapper for header/back/editOut of scope
Acceptance criteria