
All the boxes can be opened apart from in December when they have to be opened one after each other, and only when you’ve reached that day. Clicking an opened box gives a larger image.
Implementation wise there’s a YAML file specifying the layout and images and dimensions. A Sinatra app enables editing the layout in a HTML page. More Ruby generates the deployable HTML and images and Javascript code to make the show work. HTML web storage is used to locally record what boxes have been opened in a browser.