06 / 08
Foam Amsterdam
Webby Nominee, Awwwards Site of the Day, Awwwards Developer Award
- D3.js
Live project https://www.foam.org/

Foam is a photography museum on the Keizersgracht in Amsterdam, and also a quarterly magazine, a print gallery, a library, a podcast and a programme for emerging photographers. The platform holds all of it without flattening it into one kind of thing. I developed it at Build in Amsterdam and gave creative input during prototyping; the UI design is by Margot Gabel and Manvydas Kugis.

Exhibitions, magazine features, podcast episodes and video share one system. The distinction it keeps is between a work and what is written about it: photographs get the full width of the window and no crop, and text arranges itself around them.
Curators build their own online exhibitions in the CMS, with chapters, layouts and a background colour per show, without a developer.

Connections is a D3 graph of the themes stories share, used as navigation rather than as a chart. An exhibition, a podcast episode and a magazine feature can share a subject and nothing else, so neither date nor category is a good way in. The graph lets a reader move sideways through the archive by theme.


D3 runs the simulation, with the tick handler writing positions straight to attributes so the
physics never passes through component state. The nodes are real DOM
inside foreignObject, so they inherit the graph’s transforms instead of being kept in sync on
top of it. Packaged separately as
react-d3-force-distance.
The platform stayed open while the museum building closed for renovation.