Capture legally-relevant signatures, not just a scribble.
A TypeScript widget that records pressure, velocity, and timing per stroke — then stores it as scalable, replayable vector data. Own your data, verify it server-side, ship it in an afternoon.
Capabilities
Everything the data model needs to hold up as evidence.
Pressure-accurate capture
Pointer events record x, y, pressure, and timing per stroke — touch, pen, and mouse all normalized into one model.
Vector, not raster
Signatures store as SVG path data with a replayable pressure array — small, scalable, and animatable on playback.
Server-stamped timestamps
The signing date is assigned by the API, never trusted from the client, closing the door on backdated records.
Opt-in geolocation
Location is requested through explicit consent UI and defaults to null on decline — built for GDPR / POPIA.
Scoped key pairs
Every project gets a public key for capture and a secret key for retrieval. Rotate either one, instantly invalidating the old.
WASM stroke smoothing
An optional Rust-compiled WASM module smooths pressure and velocity curves client-side — no network hop required.
Quick start
A few lines to capture and submit a signature.