Cases

A selection of the work: what the client needed, what was built, and what it changed. Each case links through to the full write-up.

AI workflow automation

An interactive demo of the Trello-to-AI workflow

One Trello card asked for something that would show — not tell — how a Danish company can hand work to an AI colleague. The answer was cases.grn.dk: a self-contained interactive page where the visitor types a task, watches an AI pick it up, gets asked a question, answers it, and sees the finished card land at the top of Done. The brief, the domain, the design, the copy, the sound and the publication were all handled by the AI setup the page describes.

GrN.dk — internal build

Mobile delivery automation — Flutter CI/CD, on-device acceptance testing, Google Play and App Store publishing

Mit Håndværk publishes itself to two app stores — and a real phone holds the veto

Mit Håndværk is a Danish marketplace app for craft, art and design — a Flutter app on Android and iOS over a Laravel backend, with subscriptions, real-time chat and push. This case is not about the app's screens. It is about the machinery that puts a new version of it in front of users: a pipeline that takes a commit on main and, roughly ten minutes later, has published it to Google Play production — but only after the release has been installed and cold-started on a real Android device and survived it.

The same pipeline covers Apple from a Linux server that cannot build iOS at all: a release tag hands the build to a cloud macOS machine, which signs it and uploads it to TestFlight — and the tag itself cannot be pushed unless the app's subscriptions are actually approved and priced in App Store Connect.

Everything in the picture above is read off the running system: the counters come out of the pipeline's own log, and the phone panel is the screenshot the publish gate pulls off the emulator on every single release.

Mit Håndværk — Danish marketplace app for craft, art and design (mithaandvaerk.dk); Flutter on Android and iOS, Laravel backend

AI receptionist / small-business automation

An AI receptionist that never misses a call — with the back office on screen

Frontdesk 24/7 is an AI receptionist for a fictional Danish plumbing firm, Nordlys VVS, that you talk to the way a customer would — by voice or text, in opening hours or after them. The point of the demo is the split screen: while the receptionist answers on the left, the back office animates on the right — the calendar books itself, the caller lands in the CRM, a confirmation SMS goes out and the owner gets a message. Nothing is described; everything is shown happening.

GrN.dk — demo shelf (demo.grn.dk)

3D on the web / product configurators

Spectacles modelled in Blender, configurable in the browser — down to the prescription in the lens

Optik №1 is a pair of acetate spectacles built end-to-end in Blender 4.5 — modelled, textured, rigged and animated — then exported as glTF and played back live with three.js. In the browser you pick a frame finish and a lens, dial in a prescription on lenses with real refraction, and step into sunlight to watch photochromic glass darken. A Cycles-rendered film and the source files ship alongside the live scene.

GrN.dk — demo shelf (demo.grn.dk)

Maintenance automation / DevOps

The boring superpower: a weekly gate that keeps twelve sites' dependencies current

Twelve production websites on one server, each with its own Composer dependency tree, and the oldest question in hosting: are they up to date, and is it safe to make them so? The dependency-currency gate answers it weekly and automatically — it inventories every vhost, checks each dependency tree against the PHP version that site's web server actually runs, queues the semver-safe updates for approval, and reports the breaking ones instead of applying them.

GrN.dk — server fleet (12 production vhosts)

Web design / Drupal

Redesigning grn.dk in the open: eight directions, one pick, a live theme switch

The site you are reading redesigned itself with the same card-driven AI pipeline it writes about. Eight complete design directions were built as static previews from the site's real content — real articles, real cases, both languages — and published side by side on demo.grn.dk. One won. It then became a brand-new Drupal 11 theme, built in phases on the live site behind a logged-in preview, and switched on with a single config change.

GrN.dk — this site

Web / portfolio infrastructure

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

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.

GrN.dk — demo.grn.dk

Accounting automation / UK practices

One client’s month runs itself: bank feed to a filed VAT return, while you watch

AutoLedger is a guided walkthrough for UK accounting practices: one fictional client (Hazelbrook Coffee Roasters Ltd), one month, and a play button. The bank feed lands, every transaction is categorised with its VAT treatment, the ledger reconciles, the nine-box MTD VAT return fills itself in and goes to HMRC, and the reports draw themselves — while an activity log narrates what the engine is doing and why. Nothing leaves the browser; the client, the bank and the filing are all simulated.

GrN.dk — demo shelf (demo.grn.dk)

Retail — point of sale

One till, many sellers: a market POS that splits every sale by stall

A point-of-sale system for a physical market where dozens of independent sellers share the same tills. A cashier rings up one basket; the system knows which stall every item belongs to, splits the sale per seller at the moment it happens, and keeps the books each stall settles against. Thai-first interface with a synchronized English translation set, built on Laravel 12 with a Filament v4 admin panel and PostgreSQL underneath.

A community market in Thailand (client kept anonymous)

Browser and mobile games

A 2020 phone game rebuilt for the browser, with a global leaderboard

veganpower.grn.dk is Vegan Power, a catch-the-fruit arcade game with a rule you understand in one second: eat fruit, not friends. Fruit falls and you catch it. A chicken, a cow or a penguin falls and you dodge it — each one you hit costs one of your seven hearts. It began in 2020 as a small Flutter and Flame game for Android, released on Google Play that December. In 2026 it was taken apart and rebuilt: it now opens in any browser with no install and no account, keeps a global high-score table on its own small API, and carries a multiplayer beta where two to four players share one arena and shove each other off the fruit.

GrN.dk — internal build

Flutter / mobile and web apps

Thirty Flutter case studies where the page is the app — and a park you can walk through

flutter.grn.dk is a shelf of thirty small case studies, one per Flutter package worth knowing — routing, state management, animation, charts, maps, storage, i18n — and each one is a live demo the visitor can poke at, with the code beside it and real apps that use the package. There are no screenshots of Flutter on it: the site is itself the Flutter app, compiled for the web, with a real URL per case, a crawlable page behind each URL and a 3D “case park” where every case has its own stand.

GrN.dk — flutter.grn.dk

ERP / open-source business systems

There is a world outside Microsoft ERP: one Danish wholesaler's order, run on an open stack

Udenfor (“Outside”) follows one order through one day at Nordvind Foods, a fictional Aarhus wholesaler with 14 staff and a web shop — on an open stack instead of Business Central. It plays in three acts: the camera zooms out of the Microsoft walled garden onto a live system map where an order agent, an open-source ERP core on Postgres, the warehouse scanner, GLS, NemHandel/Peppol e-invoicing, a PSD2 bank feed and the tax export light up in turn while the ledger posts itself; then you ask the books a question in plain Danish and watch the SQL and the answer appear; then you change a business rule in one sentence and see it tested and deployed in seconds, next to the 26-day partner change-request timeline it replaces.

GrN.dk — demo shelf (demo.grn.dk)

AI governance / data protection

An AI control layer cast in glass: watch personal data become tokens mid-flight

Kontrollaget (“the control layer”) makes invisible AI infrastructure visible. It is a three-act demo for Danish organisations, in Danish and English: write a prompt containing personal data and watch it fly as tokens through a glass pipeline — PII scanner, policy gate, model router — with every step writing itself into an audit log; relive a US provider’s shutdown day with and without a control layer in place; then try to beat the anonymiser yourself in a live redaction playground.

GrN.dk — demo shelf (demo.grn.dk)

Educational apps for children

Learning to write Thai, one traced letter at a time

abc.grn.dk teaches a child to write an alphabet rather than to recognise one: pick a letter, trace it with a finger, and the app scores the shape you actually drew and tells you how close you got. Thai first — all 44 consonants, free — with Japanese hiragana and katakana behind a premium gate. Everything happens in the browser: the handwriting recogniser is plain Dart running on the device, the spoken letter names are files bundled with the app, and there is no account, no runtime backend and no advertising.

GrN.dk — internal build

3D on the web / Blender pipeline

A brass orrery built by one Python script in Blender, turning live in the browser

The Orrery is a brass planetarium modelled, textured, rigged and animated in Blender 4.5, exported as glTF and played back live with three.js: a meshing gear train under the deck, four planets and their moons on whole-number orbits, a glowing sun with bloom, wireframe and speed controls, drag to orbit. Below it the same scene rendered as a seamless Cycles turntable loop — and the .blend, the .glb and the one Python script that builds all of it from an empty scene.

GrN.dk — demo shelf (demo.grn.dk)

Personal automation, public-source scraping and AI-assisted filtering

A private job radar that reads seven boards every morning — and throws away most of what it finds

This one has no link on it, and that is the point: jobs.grn.dk answers 401 to the internet and always has. It is an internal tool — a job radar, built for its owner's own search for work. Every morning it reads seven contract and job boards, drops everything that cannot match a written profile, has what survives judged by a language model against that profile, and presents the handful worth reading as one screen with three buttons: applied, draft email, discard.

Because it holds one real person's live job search, nothing of it is published here. The screenshot above is a throwaway demo copy of the same interface, seeded with invented rows — every company, title, location and address in it is a placeholder, and it labels itself "demo data" in the header so it can never be mistaken for the live board.

GrN.dk — internal build

Logistics / TMS configuration

A transport management system you can break in sixty seconds: fourteen orders re-planned on every rule you flip

TMS Configuration Cockpit runs a small transport management system in the browser: one distribution centre in Aarhus, three countries, fourteen orders, and a configuration panel holding exactly what a TMS application and configuration manager owns — business rules, planning parameters, carrier tariffs, an ADR dangerous-goods workflow and group-versus-local country templates. Every lever you touch re-plans tonight’s tours live, moves the KPIs, shows up in the EDI interface monitor and writes itself up as a change request. It was built as a working answer to a job posting’s “why you?”.

GrN.dk — demo shelf (demo.grn.dk); built as a working job application

Browser games and language learning

A 3D browser game where every monster is a Japanese word

fantasy.grn.dk is コトバモン KotobaMon — a 3D monster-catching game that runs in an ordinary browser tab, where every monster is a Japanese word. ヒバナ hibana is a spark, コダマ kodama is a tree spirit, and catching one is how the word gets learned. It has a procedurally generated island with five biomes, twelve species, turn-based battles with a type chart, and full Japanese voice-over subtitled in Japanese, romaji and English at the same time. There is no download, no account, no build step and no backend: the whole game is 2,821 lines of vanilla JavaScript plus a vendored copy of Three.js, served as static files.

GrN.dk — internal build

3D on the web / product presentation

A crystal hall rendered live in the browser — then profiled until it ran everywhere

Kristallsaal is a walk-through jewellery hall that runs entirely in the browser: six vitrines of cut-crystal pieces under museum lighting, a mirror-polished floor, and light that actually splits into colour inside the stones. There is no engine download and no build pipeline — one HTML file, one JavaScript module and Three.js, served as static files. It exists to answer a client question with a demo instead of a slide: what does "3D product presentation on the web" feel like at the high end?

GrN.dk — demo shelf (demo.grn.dk)

Coworking and shared offices

Pay-to-book table reservations for a coworking space

A Danish coworking space wanted members to book a table by the hour and pay for it — because at 20 kr. per hour per table, a booking that has not been paid for is not a booking. tableflow.grn.dk is that system, built from the client's brief and running live: an hour grid that shows what is actually free, a fifteen-minute payment hold that releases itself, and an admin screen for the people who run the place. Plain PHP and MariaDB — no framework, no dependencies, 853 lines in seven files.

Danish coworking space — client brief, built as a working demo

AI content automation

This site writes its own articles — every morning, with a hand-sketched infographic

The articles on this site are written by a pipeline: every morning it scouts what changed in the web-development and AI world, picks one topic worth a practitioner's attention, writes the piece, draws a sketch-style infographic for it, and publishes — 138 articles since mid-April 2026, one per day, without a stock photo or an image-API key anywhere in the chain. A second, deliberately slower instance runs on nowa.dk: one guarded article a week, with a kill switch.

GrN.dk (this site) and nowa.dk

Community platforms / legacy migration

Fifteen years of community ideas, carried from Drupal 7 to Drupal 11

Ideahunters is a crowdsourcing platform where brands post a challenge and a community submits ideas against a deadline. The original site ran on Drupal 7 — end-of-life, unsupported, and increasingly a liability — with over a decade of challenges, discussions and member accounts in it. The platform was rebuilt on Drupal 11 and the legacy content migrated across: 426 pieces of content and 921 user accounts, anonymized on the way in.

Ideahunters — crowdsourced-challenge platform

Quantitative research tooling and automation

A trading rig that tests its own strategies every hour — and never places an order

crypto-dash.grn.dk is the public window onto a strategy-research rig that runs on our own server and trains itself. Every hour it backtests a fresh batch of trading-strategy configurations against five-minute crypto candles, scores each one on data it was not fitted to, keeps a running leaderboard, promotes the configurations that hold the top into a simulated book, and demotes them again as soon as their forward behaviour drifts away from what the backtest promised.

It is paper trading only. The installation holds no exchange keys, calls no order endpoint and has no account to spend from. Every fill, every position and every P&L figure on that page is simulated — which is why the page prints PAPER ONLY on itself, in orange, at the top of every hourly regeneration.

GrN.dk — internal build