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.

Login / Signup Home search bar + 8 category tiles Upload Search results flat list, mixed types Category screen grid · list · feed — see patterns below one of the 8 tiles Collection detail Music, Podcasts, Series, Audio Books Player universal, every path ends here nav search tap tile grouped: has sub-items standalone: plays directly tap track / episode / chapter tap result
Music, Podcasts, Series, and Audio Books route through Collection Detail (an album's tracks, a show's episodes) before playing. Movies, Shorts, News, and Videos play directly from the category screen.

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.

User MediaFile the actual bytes on disk Item track · episode · chapter · standalone Collection album · show · book — optional CollectionCredit ItemCredit Person artist, director, host… uploads 1 : 1 1 : many (optional) role: artist, host, author… role: director, narrator, creator…
Two join tables (CollectionCredit, ItemCredit) both point at the same Person table — one artist row can be "Artist" on an album and "Director" on a video without duplicating the person.

How each category maps onto it

CategoryCollection =Item =sequenceNumberTypical credit
MusicAlbum (optional)TrackTrack numberArtist
PodcastsShowEpisodeEpisode numberHost
MoviesMovieDirector
ShortsClipCreator
SeriesShowEpisodeEpisode number + seasonCreator
Audio BooksBookChapterChapter numberAuthor, Narrator
NewsClipReporter / Source
VideosVideoCreator
Simplified for this draft — flag before building

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.

This is a real migration, not an addition

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.