Technology Stack

For the technically minded. The standards we speak, the stack we run on, and the choices behind it.

Delving is built on open standards and a deliberately small set of technologies. Nothing in it locks your data in: it arrives in standard formats, it leaves in standard formats, and what happens in between is visible at every step.

Open standards in and out

  • Harvesting: OAI-PMH, plus XML and CSV dumps and SIP packages (source records bundled with their mapping).
  • Data models: mapping targets the model you choose, such as EDM (the Europeana Data Model), EAD for archival finding aids, or your own schema. Every record is validated against that model’s XML Schema.
  • Publishing: a faceted JSON search API, OAI-PMH for passing records on, and on request RDF with dereferenceable URIs and a SPARQL endpoint.

The stack

  • Orchestra, the interface for the whole process, is built with SvelteKit and Svelte 5 on SQLite. Its lists and forms are drawn from schemas the server sends, so the interface never hard-codes what a record looks like.
  • The search index is a Go service on Elasticsearch. It serves the search API that DIW and your own applications run on.
  • Mapping runs on a proven mapping engine that has published heritage collections for years. Mappings are generated from the field-to-field mapping you design, and refined by hand where the data asks for it. Orchestra talks to it over gRPC, and the live preview uses the very same engine as the full run.
  • Images are handled by a Go media service on libvips, with source files in S3-compatible object storage. It generates thumbnails and Deep Zoom tiles, so even very large scans open instantly and zoom smoothly.
  • DIW is a Svelte component that installs on almost any web platform, WordPress included.

Why Go, Svelte and Zig

We build new services in Go: fast, simple to deploy as a single binary, and easy to read years later. Interfaces are Svelte, because it makes them reactive: change a mapping or a filter and the screen updates on the spot, without a page reload and without a heavy framework in the browser. Where raw speed matters, we reach for Zig, as in the static libvips wrapper behind our image processing. Three languages, each doing what it is best at, keeps the stack small enough to maintain properly.

Building on the data

Want to query the published data yourself? The search API, SPARQL and RDF are covered on the developers page.

Have a collection that deserves to be found?

Tell us about your data. We'll show you what Delving can do with it.

Get in touch