The JAV catalogue lands, and the site finally gets a layout
Today the catalogue roughly doubled in size and took on a whole new shape. JAV (Japanese adult video) has a fundamentally different taxonomy than the Western
Today the catalogue roughly doubled in size and took on a whole new shape. JAV (Japanese adult video) has a fundamentally different taxonomy than the Western catalogue, fans follow directors (監督), series (シリーズ), labels (レーベル), and makers (メーカー) as first-class entities, and every JAV metadata source exposes this same structure because it's the native taxonomy the industry uses. One well-known source publishes weekly full-database SQL dumps under CC0 (their live API is dead, but the dumps are alive and well), so the import path became: download the weekly 245-MiB gzip dump, load into a staging Postgres schema, join against our catalogue tables, map into the shared ScrapedVideo shape. Migration 016 added makers / series / directors tables plus cross-language columns (name_ja, title_ja, description_ja) and a videos.director_id + videos.series_id. First import against the SODVR label: 1,946 videos + 747 actresses + 94 directors + 126 series in 13 seconds, zero errors. A site-wide jav_mode filter (hide / mixed / only, default hide) mirrors the orientation switcher 1:1, same pill UI, same localStorage pattern, same API injection.
With the catalogue partitioned, the site needed a proper shell. The old horizontal header was getting squished as features piled on (orientation pill + jav_mode pill + nine nav links + auth state). Swapped it for an always-expanded 240 px sidebar on desktop with a slide-in drawer on mobile. Three flex children inside the sidebar, brand at the top (fixed), scroll region in the middle (the only piece that scrolls), auth at the bottom (pinned), so login / logout is always reachable regardless of how far you've scrolled through the filters. The home hero got replaced with an editorial masthead: today's date, five catalogue stats, and a pure-CSS emoji drift background running on the compositor thread (zero network bytes, zero layout shift, prefers-reduced-motion respected).
A full-res image lightbox for video galleries came in, clicking a thumbnail opens the high-res version in an overlay with keyboard navigation, a counter, and swipe support on mobile. Six homepage discovery sections auto-generate from catalogue signals (New on PornBoxd, Studio Spotlight, This Week's Longest Scene, Rising Actors, Freshly Reviewed, One Year Ago Today). And then an embarrassing JAV-specific gotcha: roughly 500 DMM image URLs were serving a 2,732-byte "Image coming soon" placeholder because the dump stored actress filenames with .jpg already in them, and naive concatenation gave us kogawa_iori.jpg.jpg. DMM 302-redirects those to the placeholder. Added a runtime guard in the image processor (SHA-256 check on any 2,732-byte response body, plus URL pattern match) so placeholders get rejected before landing in R2.