,
,,
Calisto Slides

Presentation editor engine.

Slide editor with a dedicated presentation engine. Text elements, shapes, per-slide backgrounds. Content stored as JSON snapshots in Calisto Box. PPTX import and export. PDF export at 16:9. Three built-in templates plus custom templates. Merge fields. Generate decks from a prompt with outline preview. Per-save version history. Brand Check. Slideshow API for Display and TV.

PPTX + PDF Export · Merge Fields · Per-Save Versioning · Brand Check · Slideshow API

,0,

export formats (PPTX, PDF)

,0,

built-in templates

,0,

generation endpoints (generate, outline, improve)

,0,

scoped contexts (deals, proposals, lessons)

The Slide Engine

Presentation engine. JSON snapshots. Box storage.

Calisto Slides wraps a dedicated presentation engine for the runtime, the slide data model, and the editing surface. Content persists as JSON snapshots in Calisto Box.

Presentation Engine

Built on a dedicated presentation engine. The editor runs client-side. Slide state is a JSON snapshot with pages, pageOrder, and pageElements. Each element has position coordinates (left, top, width, height) and typed content (shapeText with paragraphs and textRuns).

  • Presentation engine with editing surface
  • Client-side slide model
  • Core runtime integration
  • SlideEditor + SlideEditorHandle ref API

Text Elements and Shapes

Text elements with configurable font size, bold, and positioning. Each slide contains a pageElements map of typed objects. Title elements and bullet elements are placed at specific pixel coordinates within the slide canvas.

  • Per-element font size (7pt to 48pt)
  • Bold and regular text styles
  • Pixel-level element positioning
  • Title + bullet element types

Per-Slide Backgrounds

Each slide stores a background color as an RGB hex value in the snapshot. The PDF exporter detects dark backgrounds and switches text to white. The theme API provides account-level primary color with brand kit fallback.

  • Per-slide RGB background color
  • Dark/light text auto-detection
  • Brand kit color sync
  • Modern and classic template names

Snapshot Storage in Box

Every save serializes the slide snapshot to JSON and uploads to Calisto Box. Files are stored with .univer extension. The editorFiles.boxFileId column points to HEAD. Presigned download URLs load content on open.

  • JSON snapshot format (.univer)
  • Box-backed object storage
  • Presigned download URLs (300s TTL)
  • editorType: "slide" in editorFiles
Architecture

Editor renders. Box stores. Snapshots persist.

The editor runs the presentation engine client-side for the runtime, the slide model, and the editing surface. Every save serializes state to a JSON snapshot uploaded to Calisto Box. The editorFiles table tracks HEAD; editorFileVersions tracks history.

Creation Paths

Blank. Templates. Generate. PPTX import. Merge fields.

Six ways to start a presentation. Blank canvas, three built-in templates, account-level custom templates, generate from a text prompt, PPTX file import, and merge field tokens for reusable decks.

Blank Presentation

Title input and a single-click create. The API (POST /api/slides/new) inserts an editorFiles row with editorType "slide" and uploads an empty snapshot to Box. The editor opens immediately.

  • POST /api/slides/new
  • Empty single-page snapshot
  • Redirect to /slides/[fileId]

Built-in Templates

Three templates ship with every account: Property Pitch Deck (investor or agency presentations), Training Module (staff onboarding), and Quarterly Review (business performance). Selected via templateId on create.

  • Property Pitch Deck
  • Training Module
  • Quarterly Review

Custom Templates

Any presentation can be saved as a template (isTemplate flag on editorFiles). The GET /api/templates endpoint returns up to 50 account-level templates filtered by editorType "slide" and isTrashed: false.

  • isTemplate flag per file
  • Up to 50 per account
  • GET /api/templates endpoint

AI Generation

POST /api/slides/ai/generate accepts a natural-language prompt and slide count (default 5). Returns a full presentation snapshot with title slides, bullet slides, and a summary slide. Speaker notes included per slide. A separate /ai/outline endpoint returns just titles and bullets for review before generating. /ai/improve rewrites individual slide text.

  • Prompt-to-snapshot generation
  • Outline preview before full build
  • Per-slide speaker notes
  • Text rewrite via /ai/improve

PPTX Import

Drag-and-drop or file picker for .pptx files up to 50 MB. POST /api/slides/import stores the raw file in Box. On first editor open, the client-side importer converts the PPTX to snapshot format. First auto-save writes the .univer file.

  • .pptx files up to 50 MB
  • Raw PPTX stored in Box
  • Client-side conversion
  • needsConversion metadata flag

Merge Fields

The MergeFieldPicker in the editor header inserts {{key}} tokens. POST /api/slides/merge-fields walks every text element across every slide and resolves tokens against a MergeFieldContext object. Uses the shared merge-fields engine.

  • {{key}} token syntax
  • Recursive snapshot resolution
  • Shared merge-fields engine

,0,

creation paths (blank, built-in, custom, AI, import, URL prompt)

,0,

MB max PPTX import size

,0,

custom templates per account

,0,

merge field syntax: {{key}}

Playback and Export

Present from the editor. Export as PPTX or PDF.

Full-screen presentation mode via the presentation engine. The slideshow API serves read-only snapshots to Display and TV apps. PPTX export runs client-side. PDF export runs server-side at 16:9 with background colors and slide numbers.

Presentation Mode

Full-screen playback. Slideshow API. Speaker notes.

Present directly from the editor with one click. The slideshow API serves read-only snapshots to Display and TV apps for lobby screens and digital signage.

Full-Screen Presentation

The "Present" button in the editor header calls editorRef.current.enterPresentationMode(). The presentation engine handles full-screen rendering and slide navigation. No separate app or plugin required.

  • enterPresentationMode() via ref handle
  • Native engine playback
  • Triggered from editor header CTA

Slideshow API for Display/TV

GET /api/slides/slideshow?fileId=xxx returns a read-only snapshot with slide count for embedding in Calisto Display and TV apps. A list mode (?list=true) returns up to 50 recent presentations for slideshow scheduling.

  • Read-only snapshot endpoint
  • slideCount in response
  • List mode for scheduling (50 max)
  • Box presigned URL content fetch

Speaker Notes

Generated presentations include a "notes" field per slide with talking points. The outline endpoint (POST /api/slides/ai/outline) also returns notes for each slide in the review step before full generation.

  • Per-slide notes field
  • Included in AI generation
  • Included in AI outline preview
Export

PPTX client-side. PDF server-side. Two formats.

PPTX export runs in the browser via the editor SDK. PDF export runs on the server with the PDF export service, rendering each slide at 16:9 with background colors, positioned text, and slide numbers.

PPTX Export

Client-side export via the editor SDK. POST /api/slides/export with format "pptx" echoes the snapshot back to the client, where the client-side exporter handles the conversion. The output is a standard .pptx file compatible with PowerPoint, Keynote, and Google Slides.

  • Client-side editor SDK conversion
  • Browser-based PPTX export
  • Standard OpenXML .pptx output

PDF Export

Server-side render via the PDF export service. The SLIDE_16_9 preset defines page dimensions. Each slide becomes a PDF page with background color fill, text elements with word-wrap, and a slide number in the bottom-right corner. Dark backgrounds trigger white text rendering.

  • 16:9 slide dimensions
  • Per-page background color
  • Word-wrapped text with bold support
  • Slide numbers (e.g. "3 / 12")
History and Platform

Per-save versioning. Scoped decks. Four platform connections.

Every save writes an immutable snapshot to Box with a version record. Presentations can be scoped to deals, proposals, or University lessons. Brand Check, Media Library, Box storage, and Display/TV integration.

Version History

Every save is a snapshot. Box stores the history.

Each save writes a new JSON snapshot file to Box and creates a version record with size, changelog, and format version. The editorFiles row always points to HEAD.

Per-Save Version Records

Every save creates a new Box file upload and inserts a row in editorFileVersions. Version numbers increment monotonically starting at 1. The editorFiles.boxFileId column always points to the latest version (HEAD). Changelog text is optional per version.

  • Monotonic version numbers
  • HEAD pointer via boxFileId
  • Optional changelog per version
  • sizeBytes tracked per snapshot

Snapshot Format Versioning

Each version record stores a formatVersion field (currently "0.5.x"). This tracks compatibility between snapshot format and the presentation engine version. Content metadata also records the format version on upload to Box.

  • formatVersion: "0.5.x"
  • Stored in editorFileVersions
  • Also in Box upload metadata

Save Notifications

A fire-and-forget in-app notification triggers every 5th version to reduce noise. The notification includes the presentation title and current version number. Category key: slides_presentation_saved.

  • Every 5th save triggers notification
  • In-app channel, low priority
  • Includes title and version number
Scoped Presentations

Deals. Proposals. Lessons. One editor, three contexts.

Presentations can be created from within deal, proposal, and lesson views. Each stores a scope ID in editorFiles metadata. The parent view queries its own endpoint to list associated decks.

Deal Presentations

POST /api/slides/deal creates a presentation scoped to a deal. The dealId is stored in editorFiles.metadata as JSONB. The deal detail view queries GET /api/slides/deal?dealId=xxx to list associated decks. Default title pattern: "Pitch Deck" + deal name.

  • dealId in metadata JSONB
  • GET lists by dealId filter
  • Notification: slides_deal_deck_created
  • Box scope: "deal"

Proposal Presentations

POST /api/slides/proposal creates a presentation scoped to a proposal. The proposal detail view can embed the slide deck. Same editorFiles pattern with proposalId in metadata. Default title pattern: "Proposal" + proposal name.

  • proposalId in metadata JSONB
  • GET lists by proposalId filter
  • Notification: slides_proposal_deck_created
  • Box scope: "proposal"

Lesson Presentations

POST /api/slides/lesson creates a presentation scoped to a University lesson. Stores both lessonId and courseId in metadata. The lesson view embeds slide content. Default title pattern: "Lesson" + lesson name.

  • lessonId + courseId in metadata
  • GET lists by lessonId filter
  • Notification: slides_lesson_deck_created
  • Box scope: "lesson"
Platform Connections

Brand Check. Media Library. Box. Display apps.

Slides connects to four platform services: Ethos Integrity for brand compliance, Media Library for image assets, Box for snapshot storage, and Display/TV for slideshow playback.

Ethos Brand Check

The editor header includes a brand check button that scans presentation content against account brand guidelines via Ethos Integrity. Returns pass/fail with a percentage score and a list of specific issues. Color resolution falls back to the active brand kit primary color.

  • useEthosIntegrity hook
  • Score percentage + issue list
  • Brand kit color sync to theme API

Media Library

The Media Library modal opens from the editor header. Browse and select images from the centralized media library for insertion into slides.

  • Media Library modal component
  • Centralized asset management
  • Image selection from editor header

Calisto Box Storage

All presentation snapshots are stored in Calisto Box (cloud storage). The settings page includes a BoxStorageView showing quota usage. Box provides presigned download URLs with 300-second TTL for content loading.

  • BoxStorageView in settings
  • Quota monitoring per app
  • Presigned URLs (300s TTL)

Display and TV Apps

The slideshow API (GET /api/slides/slideshow) serves read-only snapshots for Calisto Display and TV. List mode returns up to 50 presentations for scheduling rotation on lobby screens and digital signage.

  • Read-only snapshot endpoint
  • List mode for scheduling
  • Cross-app via slideshow API
Pricing

High-Performance Ops. Zero Monthly Overhead.

Get all 15 Core modules at no monthly cost. You only pay 2% of processed revenue.

,,
Calisto Core
$0/month
+ 2% of revenue
CommitmentNone
UsersUnlimited
Products15 included
Best for: Businesses of any size. Revenue is auto-calculated from POS orders, reservations, folios, and event tickets.
,,,,,,,

Slides

Presentation editor with collaboration and version history.

$1/mo

Part of Work Suite

Wallet-debit

Add to Pro Shop