export format

Prezillo documents can be exported as self-contained JSON files for backup, sharing, and interoperability.

File Format

  • File extension: .prezillo
  • Content type: application/vnd.cloudillo.prezillo+json
  • Format version: 2.0.0
  • Encoding: UTF-8 JSON
Same compact field names

The export format uses the same compact CRDT field names as the live document (t, xy, wh, si, etc.). No field name translation occurs — the export is a direct serialization of the CRDT state.

Envelope Structure

{
  "contentType": "application/vnd.cloudillo.prezillo+json",
  "appVersion": "0.5.0",
  "formatVersion": "2.0.0",
  "exportedAt": "2026-01-15T14:30:00.000Z",
  "data": {
    "meta": { ... },
    "objects": { ... },
    "containers": { ... },
    "rootChildren": [ ... ],
    "containerChildren": { ... },
    "views": { ... },
    "viewOrder": [ ... ],
    "richTexts": { ... },
    "styles": { ... },
    "templates": { ... },
    "templatePrototypeObjects": { ... },
    "palette": { ... }
  }
}

Envelope Fields

Field Type Description
contentType string Always "application/vnd.cloudillo.prezillo+json"
appVersion string Prezillo version that created this export
formatVersion string Export format version (currently "2.0.0")
exportedAt string ISO 8601 timestamp of export

Data Fields

Field Type Description
meta object Document metadata (name, default dimensions, grid settings)
objects Record<string, StoredObject> All objects keyed by ObjectId
containers Record<string, StoredContainer> All containers keyed by ContainerId
rootChildren ChildRef[] Root-level children in order
containerChildren Record<string, ChildRef[]> Children per container, keyed by ContainerId
views Record<string, StoredView> All views keyed by ViewId
viewOrder string[] ViewId strings in presentation order
richTexts Record<string, RichTextExport> Rich text content keyed by ObjectId
styles Record<string, StoredStyle> All styles keyed by StyleId
templates Record<string, StoredTemplate> All templates keyed by TemplateId
templatePrototypeObjects Record<string, string[]> Prototype object arrays keyed by TemplateId
palette StoredPalette | null The document palette, or null if no custom palette

Rich Text Serialization

Rich text content is serialized with both a plain text representation and the full Quill Delta operations:

{
  "aB3x_Qm7kL9p": {
    "plainText": "Hello, world!",
    "delta": [
      { "insert": "Hello, " },
      { "insert": "world!", "attributes": { "bold": true } }
    ]
  }
}
Field Type Description
plainText string Plain text content (for search/indexing)
delta object[] Quill Delta operations (for restoring formatting)

Numeric Precision

All numeric values are rounded to 3 decimal places in the export to produce cleaner output. For example, a position of [100.123456, 200.789012] becomes [100.123, 200.789].

Complete Example

A minimal presentation with 2 slides, one text box, and one rectangle:

{
  "contentType": "application/vnd.cloudillo.prezillo+json",
  "appVersion": "0.5.0",
  "formatVersion": "2.0.0",
  "exportedAt": "2026-01-15T14:30:00.000Z",
  "data": {
    "meta": {
      "name": "My Presentation",
      "defaultViewWidth": 1920,
      "defaultViewHeight": 1080
    },
    "objects": {
      "aB3x_Qm7kL9p": {
        "t": "T",
        "vi": "m4Jf_L1pZq8w",
        "p": "Xk2nR8vH_wYq",
        "xy": [560, 440],
        "wh": [800, 200],
        "si": "Tz8_kLmNqR2v",
        "mh": 200
      },
      "Hw5_qT2mLkJx": {
        "t": "R",
        "vi": "nP7r_S3wKxUe",
        "p": "Xk2nR8vH_wYq",
        "xy": [460, 290],
        "wh": [1000, 500],
        "si": "Qp4_rW9xJdLm",
        "s": { "f": "#4a90d9", "sw": 2 },
        "cr": 12
      }
    },
    "containers": {
      "Xk2nR8vH_wYq": {
        "t": "L",
        "n": "Layer 1",
        "xy": [0, 0],
        "x": true
      }
    },
    "rootChildren": [
      [1, "Xk2nR8vH_wYq"]
    ],
    "containerChildren": {
      "Xk2nR8vH_wYq": [
        [0, "aB3x_Qm7kL9p"],
        [0, "Hw5_qT2mLkJx"]
      ]
    },
    "views": {
      "m4Jf_L1pZq8w": {
        "name": "Title Slide",
        "x": 0,
        "y": 0,
        "width": 1920,
        "height": 1080,
        "backgroundColor": "#ffffff",
        "showBorder": true
      },
      "nP7r_S3wKxUe": {
        "name": "Content",
        "x": 2020,
        "y": 0,
        "width": 1920,
        "height": 1080,
        "backgroundColor": "#f5f5f5",
        "showBorder": true
      }
    },
    "viewOrder": ["m4Jf_L1pZq8w", "nP7r_S3wKxUe"],
    "richTexts": {
      "aB3x_Qm7kL9p": {
        "plainText": "Welcome to My Presentation",
        "delta": [
          { "insert": "Welcome to " },
          { "insert": "My Presentation", "attributes": { "bold": true } },
          { "insert": "\n" }
        ]
      }
    },
    "styles": {
      "Tz8_kLmNqR2v": {
        "n": "Heading",
        "t": "T",
        "ff": "Inter, system-ui",
        "fs": 48,
        "fw": "bold",
        "fc": "#1a1a2e"
      },
      "Qp4_rW9xJdLm": {
        "n": "Primary",
        "t": "S",
        "f": "#4a90d9",
        "s": "#2d5a87",
        "sw": 2,
        "cr": 8
      }
    },
    "templates": {},
    "templatePrototypeObjects": {},
    "palette": {
      "n": "Default",
      "bg": { "c": "#ffffff" },
      "tx": { "c": "#333333" },
      "a1": { "c": "#4a90d9" },
      "a2": { "c": "#5cb85c" },
      "a3": { "c": "#f0ad4e" },
      "a4": { "c": "#d9534f" },
      "a5": { "c": "#9b59b6" },
      "a6": { "c": "#1abc9c" }
    }
  }
}