Live site 03Website · Live 3D · WebGL2026

Severin

Sourdough pizza on Frederiksholms Kanal. Scroll through one day at their table outside, under today's sun, and their own photos land on it.

Open the site (opens in a new tab)restaurantseverin.dk

Client
Severin, Nybrogade 30, Copenhagen
Sector
Food and drink
Role
Design, 3D and development
Year
2026
Deliverables
Website in Danish and English, Live terrace scene, Their photos matched to the live table, Menu and opening hours, Map and directions, Sound, An editor the owner can use themselves
Tech
three.js · WebGL2 · GLSL · Camera projection · Web Audio · NOAA solar position · OpenStreetMap · Next.js · Sanity

The brief

Severin is a restaurant on the canal across from Slotsholmen: barista coffee and breakfast in the morning, sandwiches at lunch and sourdough pizza at night. The owner takes all the photos. The old site had no opening hours and no menu, and on a phone the photos took seconds to load. So the two things people look up most just weren't there.

The approach

I built the page as one day at their table outside. Scrolling runs the clock from 10:00 to closing, the table gets laid with whatever they serve at that hour, and it's lit by the real sun over Copenhagen on today's date. The owner's photos are good, so the page is built around them: each dish is their photo projected back onto a plate on the table from where they stood. When the camera gets to that spot, the live table and the photo line up and one fades into the other. The owner can keep it up to date from a phone: the opening hours, a closed day with a note to guests, and the menu with its dishes and prices sit in Sanity, a headless CMS, with the editor in Danish. The page reads them when it loads, with no rebuild, and keeps its own copy if Sanity is slow.

  1. Severin's site at 10:39: the round walnut table on the cobbles in morning sun, a cappuccino and Sunny Benedict just set down.

    01 / 05

    One day

    Scroll is time. Each section runs through its hours as it passes the middle of the screen, and the clock in the corner keeps up. Coffee, plates and glasses are brought out and cleared as the day goes.

  2. The owner's photo of Sunny Benedict and a cappuccino, filling the phone where the live table was a moment before.

    02 / 05

    Their photo, on the table

    At 11:00 the camera moves to where the owner stood to shoot their breakfast. The plate on the table is their photo projected back onto it, so from there the two line up and the photo fades in over the live table. The cup and the napkin stand where the photo has them.

  3. The table from above in low afternoon sun: the light through a beer and a gin and tonic falls across the walnut in amber and pale gold.

    03 / 05

    Today's sun

    The sun's position is worked out for Copenhagen and today's date, so the shadows on the cobbles are today's. The parasol goes up for lunch, and each glass throws its own coloured light.

  4. The owner's photo of a sourdough pizza with burrata and a glass of red, over the table at night.

    04 / 05

    Pizza at night

    After sunset the bulbs come on one at a time and the pizza gets the same treatment as breakfast. Hold to light the candle. Turn the sound on anywhere and a jazz trio plays inside, all day.

  5. The closing card: what they serve, open 10–21 every day, email and links.

    05 / 05

    10–21, every day

    The day ends on what a guest needs: the hours, the address, a map, and their food safety rating one tap away.

Open the siterestaurantseverin.dk (opens in a new tab)

Under the hood

Measured 18 October 2026, Chrome on a MacBook Pro

Triangles a frame
211,226
The heaviest frame, every pass counted, in 371 draw calls. WebGL2.
Download
3.6 MB
2.3 MB before the first frame, 3.0 MB on a phone.
Slow phone
60 fps
95 % of frames under 16.8 ms, on a phone screen with the CPU slowed four times. There the case shows a film of the site.
If 3D can't run
A walnut-brown stage in place of the table. The owner's photos and words read the same.

Index 15 projects