First draft — for discussion, not final
Mediabase — from single-list app to a real media app
Screen flow, layouts for the 8 categories on your home screen, and a database design to back them. Built from your Home wireframe — same sketch style carried through every screen below.
Your reference — Home
Confirming I read this right before building on top of it: a hamburger menu and search bar up top, open space in the middle (room for something later — recently played, a hero banner, not decided yet), and the 8 categories as a fixed 2×4 grid at the bottom.
Screen flow
Everything eventually leads to the Player. The one real branch is whether a category has sub-items to browse first (an album's tracks, a show's episodes) or plays directly.
The 4 screen patterns
Instead of 8 bespoke layouts, the categories share 4 real shapes. Below each is one representative wireframe — the others just swap cover proportions or which metadata line shows.
Database design
Not eight tables — two shapes cover every category. Collection is the optional grouping (an album, a podcast show, a series, an audiobook). Item is the actual playable thing (a track, an episode, a chapter, or a standalone movie/short/news clip/video). Person is anyone credited — artist, director, host, author, narrator — attached with a role, so the same table covers every kind of credit instead of a separate director column here and narrator column there.
How each category maps onto it
| Category | Collection = | Item = | sequenceNumber | Typical credit |
|---|---|---|---|---|
| Music | Album (optional) | Track | Track number | Artist |
| Podcasts | Show | Episode | Episode number | Host |
| Movies | — | Movie | — | Director |
| Shorts | — | Clip | — | Creator |
| Series | Show | Episode | Episode number + season | Creator |
| Audio Books | Book | Chapter | Chapter number | Author, Narrator |
| News | — | Clip | — | Reporter / Source |
| Videos | — | Video | — | Creator |
Series seasons aren't a separate table here — Item gets an optional seasonNumber alongside sequenceNumber (the episode number), rather than a full Season entity. Fine until seasons need their own cover art or description.
Music singles vs. albums — a track with no collectionId is just a standalone single; the same Item/Collection pair handles both without a special case.
News "source" — could reasonably be a lightweight Collection per publisher/program instead of a per-clip credit. Left as a credit for now since it's simpler; worth revisiting if sources become a real browsing dimension.
Today's schema is one flat Media table. This splits it into MediaFile (renamed, same idea) plus new Collection, Item, Person, CollectionCredit, and ItemCredit tables — existing rows would need a migration script to become standalone Items, not just a new column. Not something to run until this design is actually agreed on.