Artpack

A gallery you can walk, served as static files.

Artpack turns a folder of artwork and one JSON file into a 3D exhibition you can walk — built from Git, served as static files, with no CMS and no database behind it.

Now showing: Blue Hour — Six studies, in a loft above open water. 7 works, hung in the Loft.

What it does

A show is a folder of images and a JSON file describing them. A build step turns that into compressed textures and a room, and the result is a page a CDN can serve to four hundred people at once without anything to scale.

  • Rooms are files

    A room is a .glb with its hanging positions marked as named empty nodes. Point the show at a different one and the same works rehang themselves, at their real size in centimetres.

  • Lit like a room, not a slideshow

    WebGPU where the browser has it, WebGL2 where it does not. Picture lights are metered in candela and their shadows are baked once. The reproductions themselves stay unlit, so a work shows the colours the artist approved.

  • Look closer

    Open a work and it fills the screen at whatever magnification you want, beside the things a wall label has no room for: the curator's notes pinned to the passages they are about, the palette, a figure for scale, edition, provenance and literature.

  • A route through the show

    A guided tour walks to each stop in turn, turns to face the work and says what the curator would have said standing in front of it. Walk off mid-stop and it waits.

  • Other people in the room

    Optional presence and chat over a Cloudflare Worker and one Durable Object per room, in binary frames rather than JSON. It is a flag in the exhibition file; the gallery works completely without it.

  • Rooms from real places

    Drop a pin on a map and the pipeline builds a walkable outdoor room from OpenStreetMap buildings — fetched once, committed, and never fetched again at build time.

  • It embeds

    An <iframe> is the whole mechanism, and the URL carries the state: open in a given room, on a given work, or straight into the tour.

  • Readable without a GPU

    The page renders the catalogue before the engine boots and keeps it as the fallback when neither WebGPU nor WebGL2 is available. The whole show stays a document you can read, tab through and search.

  • Nothing to run

    No CMS, no origin database, no third-party analytics and no key in the bundle. What is deployed is a directory of files, and what it costs to keep up is what a CDN charges to serve them.

Example galleries

Every room below ships with the repository and holds the current show. Pick one and it opens with the same works rehung in it.

Hanging a show

Everything a curator touches is a file in the repository.

  1. Drop the artwork into content/artworks/ — SVG, PNG, JPEG or WebP, at whatever resolution it was scanned.
  2. Describe each piece in content/artworks.json: title, artist, physical size in centimetres, and anything else worth saying about it.
  3. Point content/exhibition.json at a room, and push. The build compresses the images, validates the manifest and emits the site.