Story Collections
A first-person archive of war years, family lore, and legacy.
Story Collections was “Curated Reels” on Piet’s original front door: many short pieces in the tellers’ own voices, assembled by hand into portraits and themes (“Life Philosophy Portraits”, “Wisdom Gathered Across a Lifetime” in the prototype). First-person is the point — the room exists so the family hears its people tell it themselves, one voice beside another.
The evolved intent presents a family’s short-form stories — clips of 30 seconds to a few minutes — as the abundant counterpart to the Cinema Gallery. Where the Cinema Gallery makes scarcity reverent (a few films that matter), Story Collections makes abundance discoverable (many short pieces that connect). The routing rule settled with Piet (1 June 2026): does it stand alone as a finished work → Cinema; does it gain meaning beside others → Stories. Not length. What the room deliberately is not: a feed, a search box, YouTube.
To be confirmed with Piet (Friday read-back): whether the founding phrasing still leads, and what has evolved.
How it’s built
Section titled “How it’s built”The room presents stories, the people who tell them, and the themes that connect them; the room owns the wall and the player choreography, the player owns playback. See the Paper “What We Deliver” board for the visual reference, and the staging captures throughout this section.
One room, two views
Section titled “One room, two views”The room offers a single view toggle — the one room-specific control — that
crossfades between:
- The Collections — the curated front: strata the visitor moves through, not a search box. The default.
- Browse the archive — the open holdings: every story, side by side, in one grid. No filter menus (no theme/person/generation dropdowns) — the curation lives in the Collections view; Browse is a calm, complete index.
The principle is curated underneath, discovered on top: the visitor follows a face or a thread and feels like the finder, while the arrangement is deliberate beneath them.
The Collections wall
Section titled “The Collections wall”The wall is composed of three strata, in order:
- Theme bands — each published theme with enough voices becomes a band
(the theme name as a serif heading with a quiet
N stories · N voicescount beneath it, afollow this thread →invitation, then a card grid; the placard refinement of July 2026 retired the decorative eyebrows). A thin theme — one with a single published story — is held back rather than shown as a hollow one-item collection. Honesty over filler. - A portrait — the most-told person is assembled into a portrait band:
their portrait, relationship, and their stories as a list, with
assemble the portrait →/All N stories →. - Single stories — stories not yet part of a shown thread (no theme link, or only in a held-back thin theme) surface in a quiet strip, “not yet part of a thread” — present, never hidden, never padded into a fake collection.
The bands arrive on a staggered Sugahara fade (slow-by-design; instant under reduced motion). The intro stats line and per-band counts were retired in the July 2026 placard refinement — each band’s grid shows its own size; counting read as flavor.
The Collections wall, post-refinement — serif theme headings, quiet cards, the teal thread invitations. Staging capture · The Ashworth Collection · 2026-07-03.
Two-plane traversal (people × themes)
Section titled “Two-plane traversal (people × themes)”Every story sits on a People × Theme grid, and both planes are walkable — the same story is reachable as “a story Edith tells” and as “a War Years story.” A story that links neither a person nor a theme is unsurfaced (computed, never stored) and falls to the singles strip — the signal that it needs curatorial placement.
The short-story player
Section titled “The short-story player”A story opens in a lightbox over the dimmed wall (deep-linkable; browser-back and Escape return to the wall with its scroll position preserved). The player sits beside a telling rail:
- The telling — the spoken story rendered as curatorial text: an opening line, a pulled serif quote, then the rest. It is the heart of the rail.
- Family context —
Speakers,Generation,Also inas a quiet metadata list. - Where this leads — at most two continuation threads, one per plane (a different voice on a shared theme — “Margaret tells it differently” — and “More from The War Years”, the next story in the curator’s collection order). Phrased as threads, never “Recommended”; a graceful dead end when a plane has nowhere to go.
“You Read Me First” in the player — the telling with its pulled quote, family context, and both where-this-leads planes. Staging capture · The Ashworth Collection · 2026-07-03.
How a story is shaped
Section titled “How a story is shaped”Each story carries its video, a duration, the people who appear in it, and the themes it belongs to, along with a poster still, the transcript (the telling), and a pulled quote. Only published stories reach the wall — drafts and archived stories never appear. A story should link at least one person and one theme; one that links neither is unsurfaced and falls to the singles strip as a signal that it needs curatorial placement. People and themes are the shared two-plane vocabulary, and theme tagging is controlled — themes exist only as records, never as free text.
Visibility — a room can be present but unreleased
Section titled “Visibility — a room can be present but unreleased”Identical to the Cinema Gallery: a room can be visible to everyone, shown as an opt-in “coming soon” tile, or held back entirely until it is ready — independently of whether its content is live. An unreleased room fails closed and never appears to a visitor until it is deliberately opened.
Setting it up
Section titled “Setting it up”How a Story Collections room reaches a family’s museum. The shared chain is documented once on Room Types & Content; these are the story-specific steps.
-
Declare the content source. In the family’s config base, add a
Collectionsrow: name, slug,Collection Type: story-collections, the content base’s ID inBase ID,Status: active(ordraftwhile filling). -
Declare the room. Add a
Roomsrow: name, slug,Type: story-collections, theCollectionlink, and aStatus. -
Fill the three tables in the content base —
Stories,People,Themes. Every story should link at least one person and one theme; themes exist only as records, never free text. -
Sync. Scheduled drain or Sync now. People and Themes are promoted into the shared entity store (Neon) and stamped back with a
Neon ID; expiring poster stills are copied to durable Blob storage. -
Verify. On staging as an anonymous visitor: the wall composes (bands / portrait / singles per your content), a story opens in the player with its telling, and unpublished stories are absent.
Fields the room reads
Section titled “Fields the room reads”Stories table (content base):
| Field | Type | Required | Consumed by |
|---|---|---|---|
Title |
text | yes | card + player title |
Vimeo URL |
url | yes | the story player |
Duration |
text/number | yes | card + player metadata |
People |
link → People | recommended | portrait plane, speaker metadata (a story with no person and no theme falls to the singles strip) |
Themes |
link → Themes | recommended | theme bands, “More from …” thread |
Transcript / telling |
long text | recommended | the telling rail |
Pulled Quote |
text | optional | the serif pull-quote in the telling |
Poster Still |
attachment | recommended | card + player poster (Blob-copied on drain) |
Status |
select | yes | only published reaches the wall |
People table: Name (yes), portrait attachment, relationship, generation,
Neon ID (stamped by the sync — never hand-edit). Themes table: Name
(yes), Status, Neon ID (same rule). People and Themes are the shared
two-plane vocabulary and feed the cross-room entity store.