Problem
The current storyline page header crams everything into one dense area — Moleskine cover, title, rating, writer info, genre, plot count, AND 3 stat boxes all inside the same flex container. It feels cluttered compared to professional web fiction platforms like Ridibooks.
Design Reference
Ridibooks (Korean web fiction platform) uses a clear 3-zone layout:
- Zone 1: Cover + core identity (title, rating, author) — minimal and clean
- Zone 2: Metadata/stats in a separate bordered section below the hero
- Zone 3: Content (chapter list)
Reference images are available in the GitHub issue comments (Ridibooks desktop + mobile screenshots).
Solution — 3-Zone Layout
Zone 1: Hero (Cover + Identity)
┌─────────────────────────────────────────────────────────┐
│ │
│ ┌──────────┐ Title │
│ │ │ ★★★★★ 5.0 (2) · 👁 38 │
│ │ MYSTERY │ │
│ │ │ Writer @project7 │
│ │ Book │ Genre Mystery · English │
│ │ Title │ │
│ │ │ │
│ │ 4 plots │ │
│ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
What changes:
- Remove stat boxes (Market Cap, Supply, Deadline) from this area
- Remove "Plots" info row (already shown on cover)
- Keep ONLY: title, rating/views, writer, genre/language
- Result: clean, scannable identity section
Zone 2: Stats Card + Action (new bordered section)
┌─────────────────────────────────────────────────────────┐
│ MARKET CAP SUPPLY MINTED DEADLINE │
│ $100.51 +259% 535,445 tokens 4h 54m 24s │
│ │
│ TOKEN PRICE PLOTS CREATED │
│ 0.000187 PLOT 4 plots Jan 15, 2026 │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ + Add a new Plot │
└─────────────────────────────────────────────────────────┘
What changes:
- Stats get their own bordered card, visually separated from the hero
- Expand from 3 boxes to a 2-row × 3-col grid (6 items):
- Row 1: Market Cap | Supply Minted | Deadline
- Row 2: Token Price | Plot Count | Created date
- "Add a new Plot" button below the stats card
- Each cell uses the existing stat box style: label (
text-[9px] uppercase text-muted) + value (text-sm font-bold)
Zone 3: Content (unchanged)
Genesis section → chained plots. No changes needed.
Mobile Wireframe
┌───────────────────────┐
│ ┌──────────┐ │
│ │ │ │
│ │ MYSTERY │ │
│ │ │ │
│ │ Book │ │
│ │ Title │ │
│ │ │ │
│ │ 4 plots │ │
│ └──────────┘ │
│ │
│ Title │
│ ★★★★★ 5.0 (2) · 👁 5 │
│ Writer @project7 │
│ Genre Mystery │
│ │
├───────────────────────┤
│ MARKET CAP │ SUPPLY │
│ $100 +259% │ 535,445 │
│─────────────┼─────────│
│ DEADLINE │ PLOTS │
│ 4h 54m 24s │ 4 plots │
│─────────────┼─────────│
│ TOKEN PRICE │ CREATED │
│ 0.000187 │ Jan 15 │
├───────────────────────┤
│ + Add a new Plot │
└───────────────────────┘
Mobile notes:
Implementation Notes
- Split
StoryHeader into two sections: StoryHero (Zone 1) and StoryStats (Zone 2)
- Stats card sits between the header border-bottom and the Genesis section
- New data to surface: Token Price (already available from
priceInfo.pricePerToken) and Created date (from storyline.block_timestamp)
- "Add a new Plot" moves from inside the header to below the stats card
- The Moleskine cover remains decorative — title/genre shown on it are supplementary to the info panel
Acceptance Criteria
Branch
task/<issue>-storyline-header-3zone
Problem
The current storyline page header crams everything into one dense area — Moleskine cover, title, rating, writer info, genre, plot count, AND 3 stat boxes all inside the same flex container. It feels cluttered compared to professional web fiction platforms like Ridibooks.
Design Reference
Ridibooks (Korean web fiction platform) uses a clear 3-zone layout:
Reference images are available in the GitHub issue comments (Ridibooks desktop + mobile screenshots).
Solution — 3-Zone Layout
Zone 1: Hero (Cover + Identity)
What changes:
Zone 2: Stats Card + Action (new bordered section)
What changes:
text-[9px] uppercase text-muted) + value (text-sm font-bold)Zone 3: Content (unchanged)
Genesis section → chained plots. No changes needed.
Mobile Wireframe
Mobile notes:
grid-cols-2on mobile (2×3),grid-cols-3on desktop (3×2)Implementation Notes
StoryHeaderinto two sections:StoryHero(Zone 1) andStoryStats(Zone 2)priceInfo.pricePerToken) and Created date (fromstoryline.block_timestamp)Acceptance Criteria
Branch
task/<issue>-storyline-header-3zone