A demo shelf that keeps itself: twenty-five builds from 2019 to 2026, one PHP file and a sitemap that follows

Client
GrN.dk — demo.grn.dk
Sector
Web / portfolio infrastructure
Period
2019–2026; shelf rebuilt July–September 2026

demo.grn.dk

At a glance

demo.grn.dk is where the experiments live: twenty-five of them, from an XHTML-era sunrise calculator for Silkeborg to procedural WebGL, a Blender orrery, a crystal hall, an AI receptionist, a UK accounting autopilot and a Danish ERP day. Many of the cases on this page open on a shelf entry. The shelf itself is one PHP file that lists the demos, groups them into Featured and Tools, filters as you type and derives the sitemap from the same list — so a demo that lands in the web root is on the shelf and in the sitemap before anyone writes it up.

25 demos, 2019 → 2026: 12 featured, 12 tools, and a “Fresh on disk” row that fills itself from the web root
One array feeds the shelf, the filter and sitemap.xml — a new folder is listed before it is written up
Legacy PHP demos kept alive with a compatibility pass instead of being retired; new demos register through the same file

The challenge

A folder of one-off builds accumulated over seven years is a graveyard unless something keeps it presentable: index pages went stale, older PHP broke on newer versions, some folders were half-finished, and nothing told a visitor — or a search engine — what was there. The shelf had to be cheap to maintain, by hand or by the AI pipeline that now produces most of the demos, and it had to be safe: a folder with an index but no write-up still deserves a card, but a private or broken one must not leak onto the front.

The solution

demos.php holds the curated entries — title, description, tags, icon, hue and group — and one hidden list. On every request it scans the web root: any folder with an index.php or index.html that is neither curated nor hidden becomes a “Fresh on disk” card with a placeholder text, so the shelf never lags the filesystem. sitemap.php reads the same array, which makes the sitemap a by-product rather than a chore. Legacy demos were made to run on the current PHP with a compatibility pass instead of being retired; the three.js pieces self-host their libraries; and everything sits behind Cloudflare’s edge cache, which is why every deploy of a demo also purges its URLs.

The AI pipeline that builds the newer demos registers them the same way — a curated entry for the new slug at the top of the Featured row — so the shelf has become the publication step for demo work, not an afterthought to it.

The results

Twenty-five demos on one page, 2019 to 2026: twelve featured, twelve tools and whatever landed last night, a filter that answers to /, and a sitemap that has not been out of date since. The shelf is where a prospect goes to click; this page is where they go to read why.