The format

A storyboard is one JSON file, its cast another. Every field the renderer reads, and every word of its vocabulary.

The 23 storyboards on storyboards.sgit.ai are the worked examples: each has its storyboard.json and its series' cast.json beside it. StoryboardFormats.validate(storyboard, cast, { props }) runs every check below and returns the problems, in Node or a browser.

A storyboard

FieldRequiredWhat it is
slugyeslower-case-with-dashes, the storyboard's name in a URL
titleyesthe title
subtitleone line under it
statusdraft, built, proposed, superseded: shown as a pill
bywho made it, and when
rulethe rule its lines follow (e.g. that every line is the storyboard's, not a quote)
scenesyesthe panels, in order

A panel (a scene)

FieldForWhat it is
kindallone of the kinds below; scene if absent
captionmostthe yellow caption box
title, subtitlecoverthe cover's text
punchlinepunchlinethe big line, underlined in red
settingscene, evidence, punchline, spectrumthe background
castallwho is in the panel: { who, x, pose, mood, says, thinks, flip, max, scale, lift }
propsscenethings in the panel: { kind, x, y, scale, label, lines, colour, ... }
evidenceevidence{ quote, source } or { title, bars: [{ label, value, shown, colour }] }
stopsspectrum[{ label, note, colour, badge }] along a line
mapmapa Wardley map: { axis, nodes: [{ id, label, x, y, anchor, highlight }], links: [[a, b]], moves: [{ from, to, label }] }
graphgrapha network: { style, nodes: [{ id, label, x, y, kind, colour }], edges: [{ from, to, label }], groups, path }
noteallthe speaker's notes under the deck
sourceallwhere the panel's content comes from
not_a_quotealltrue when the lines are the storyboard's own words

x and node coordinates are 0 to 1 across the panel; a panel is 1600 by 1000 with the floor at 900.

A cast

{ "what": ..., "characters": [ ... ] }, each character { id, name, kind, pronouns, role, stands_for, personality, wants, fears, line, look }. kind is human or agent. A human's look is { skin, hair, hairColour, hatColour, shirt, trousers, accessory, accentColour, height }; an agent's is { colour }. A character with a gravity (explorer, villager, town-planner) wears its badge by its name.

A bundle

{ "storyboard": {...}, "cast": {...}, "packs": ["security"] }: what <sg-storyboard src> fetches.

The vocabulary of v0.1.0

kindscover, scene, evidence, punchline, spectrum, map, graph
posesstand, point, wave, arms-up, shrug, think, sit
moodsneutral, happy, excited, calm, worried, sad, surprised, thinking, confused, determined
settingsnone, office, interview, street, night, classroom
propslaptop, desk, book, board, phone, sign
props, security packkey, vault, qr, envelope, record, server, arrow, mark, calendar, terminal, phoneqr, padlock