Nona
Kunstencentrum Nona in Mechelen — theatre, jazz, dance and exhibitions on one Drupal site, wired into the Ticketmatic platform the venue sells through. Its search runs entirely in the browser: the whole content index ships as JSON, so there is no search server to keep alive.

Kunstencentrum Nona is the multidisciplinary arts centre in Mechelen — theatre, jazz, dance and exhibitions, plus a handful of recurring programmes with identities of their own. A venue site like that is a calendar with a shop attached, and the hard part is the shop.
I was its developer for two years. The brief was not a quiet corporate site: the design leans hard on type and colour, and most of what follows is about making that hold up as something a small team can actually run every week.
Search that needs no server
The part I would defend in a review is the search. Rather than standing up a search server, the site ships its whole content index as JSON and does fuzzy matching in the browser with Fuse.js.
The reasoning was operational, not clever. A venue’s archive is small enough to fit in a JSON payload, and a search server is a service someone has to keep alive, patch and pay for — plus a failure mode where the box is down and the site looks broken. Doing it client-side removes the server, removes the latency, and means someone half-remembering a play’s title still lands on it.
Lettering, one character at a time
The design called for display type with offset outlines that stack and overlap — easy in a layout tool, awkward in a browser, because the effect has to survive arbitrary editor-entered copy in two languages.
Every heading is split into individual characters, each wrapped and styled on its own, so the outlines land per-letter instead of around the whole text block. It reflows at any width and works with whatever an editor types, which was the actual requirement: the effect had to be a property of the theme, not something hand-tuned per page.
A gallery that loops
The homepage gallery scrolls horizontally and wraps around rather than hitting a wall at either end. That is done by cloning items at both ends of the track, so when a visitor reaches the edge they are already looking at a copy and the scroll position can be moved without anything visibly jumping.
It is paired with CSS scroll snapping, which means the browser handles the physics — no scroll-position maths on every frame, and it behaves correctly with a trackpad, a touchscreen and a keyboard without three separate code paths.
Then, two years of keeping it correct
Underneath the visible work sat the ordinary business of a multilingual culture site: the Ticketmatic integration that carries a visitor from “what’s on this week” to an actual seat, newsletters, language routing, forms that spam bots leave alone, and the shared culture-sector module stack that seven other Flemish venues also run.
Nona has run its programme on it since 2023.
TILL SLIP
- First commit2023.05.15
- Last commit2025.06.05
- Commits by me245 of 475
- Custom module files touched82
Share of the repo52% — just over half, across two years.
made of
- 01Drupal
- 02Twig
- 03Tailwind CSS
- 04Fuse.js
- 05PHP
- 06JavaScript
- 07Search API
not returnable · it shipped