Snapshot.jl

Pluto notebooks,

live as Therapy components.

A Pluto.jl notebook's @bind-dependent cells compile to WebAssembly via WasmTarget.jl and ship as interactive islands inside a lean Therapy page — real reactive DOM, no Julia server, themeable, droppable into any site.

Quickstart

import Pkg
Pkg.add("Snapshot")

using Snapshot

# lean, themeable Therapy-component export — every compilable bond group
# ships as a WasmGC island, verified against the real notebook first
export_notebook("notebook.jl")

# → notebook.html + notebook.islands/   (serve anywhere static)

At export time the notebook runs once in Pluto. Each group of co-dependent @bind variables becomes a small WasmGC module, verified two ways before shipping. In the browser a tiny runtime drives the islands from plain HTML inputs — no Pluto frontend, no multi-megabyte statefile.

Instant interactivity

Slider moves are local WASM calls — no network round-trip, no Julia process, no precompute explosion. Continuous + infinite bond domains work.

Proven before shipping

Every island passes an export-time differential oracle: byte-exact agreement with real notebook re-runs on sampled bond values. Mismatches degrade gracefully.

Native Therapy components

No iframe. The notebook is real DOM in the page — inherits the site's DaisyUI theme, flows inline, reskins with one click.

Pluto notebooks as lean Therapy components — interactive WebAssembly, no server.