Velatura: a painting conservation studio's website, with a lens that looks beneath the paint

Demo website for a fictional painting conservation studio in Florence. A lens moves over six paintings and reveals ultraviolet, infrared, X-ray and raking light, aligned at every zoom level, right down to the cracks in the varnish. Discoveries take the lens to the right spot, treatments have their before and after, and the admin panel, with a three-tap work log, can be tried without an account.

Velatura **doesn't exist**: it's a fictional studio that restores paintings on canvas and panel in Florence, in the Oltrarno district, with a made-up conservator and six made-up paintings. It's a demo website, built the way I build sites for real businesses: a public site, an admin panel for the people who run it, and deployment on my own server. A strip at the top of every page says so, and so does the label beneath every painting, inside the image, as in real studio photographs: a centimetre scale, the case number and «opera inventata · immagine generata» (fictional work · generated image), which stays on a downloaded image too. The site is in Italian and stays out of Google.

**Beneath the surface.** A lens moves over the painting, and inside the circle another layer of the same painting appears, aligned to the pixel. Under ultraviolet, old varnish glows green and earlier retouching stays dark; infrared brings out the underdrawing; X-rays reveal pentimenti, the canvas and the nails; raking light picks out cracks and lifting paint.

- **The zoom** is OpenSeadragon over Deep Zoom pyramids of WebP tiles made with sharp: 22,162 tiles, up to 8,192 pixels on the long side, and only the tiles in view are downloaded. - **The lens** clips the layer above the painting to a circle, recomputed on every move in its own coordinates, so it stays aligned at any zoom level. On a phone, in full screen, the lens stays still and the painting slides under your finger. - **The discoveries**, 30 of them, take the viewer to a spot with the right light on, and four open the home page: the vase of flowers under the jug, the shepherd painted out. 18 of the 46 treatments have their own before and after.

**The images, the delicate part.** They are all generated on my own GPU with an open model, Z-Image-Turbo. The paintings are anonymous works described by school and period: no copies of real works, no real painters, and the data model has no artist field. The AI draws only the painting, its upscale and the pentimento; Python and OpenCV derive the four lights and the stages of the treatment from the painting and five masks, so the layers match by construction.

**The admin panel** is built for the phone, at the bench: a work-log entry is a photo and two lines, in three taps. The same panel holds the treatment record and the discoveries, framed with the site's own viewer. Visit statistics use no cookies. **Anyone can try it from the site, without an account**: the server's logic also runs in the browser, on a copy of the data, and the changes stay in that browser. An automated test makes 296 comparisons between the two versions, route by route.

Vue 3 and TypeScript, Fastify and MongoDB; every change goes through 167 automated tests. On the live site, on a phone, Lighthouse scores 100 for accessibility and best practices, and between 91 and 98 for performance.

Design, full-stack development and deployment · 2026

Vue.js, Fastify, MongoDB, OpenSeadragon, OpenCV

View the site

Andrea Coppetta