Skip to main content

Show File Format

.nque files are compact JSON validated against crates/show/schemas/show.schema.json (JSON Schema draft-07). The schema uses additionalProperties: false throughout, so unknown fields are rejected.

Top-level envelope​

PropertyTypeRequiredNotes
formatstringyesConstant "nque".
versionnumberyesConstant 0 (pre-release).
showobjectyesA Show object (below).

Show​

PropertyTypeRequiredNotes
titlestringyes
descriptionstringyes
sectionsarray of SectionnoDefaults to [].

Section​

PropertyTypeRequiredNotes
idstringyesminLength: 1.
titlestringyes
sectionsarray of SectionnoNested child sections.
cuesarray of CuenoCues for a leaf section.

Cue​

PropertyTypeRequiredNotes
idstringyesminLength: 1.
textstringyes

Example​

{
"format": "nque",
"version": 0,
"show": {
"title": "Hamlet",
"description": "A tragedy about a Danish prince's journey.",
"sections": [
{
"id": "act-1",
"title": "Act I",
"sections": [
{
"id": "scene-1",
"title": "Scene i",
"cues": [
{ "id": "cue-1", "text": "Who's there?" },
{ "id": "cue-2", "text": "Stand and unfold yourself." }
],
"sections": []
}
],
"cues": []
}
]
}
}

Validation rules​

  • format must be exactly "nque".
  • version must be exactly 0.
  • show is required and must contain title and description.
  • Section and cue ids must be non-empty strings.
  • No additional properties are allowed on any object.

Validation runs on both save (before writing) and load (before parsing into Rust types), so invalid files are never written and corrupt files are rejected with a descriptive error.

Versioning​

version is pinned at 0 while the app is pre-release. A future version may introduce migrations; the envelope exists to make that possible without breaking existing files.