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-workflowautomatisering

En interaktiv demo af Trello-til-AI-workflowet

Ét Trello-kort bad om noget, der kunne vise — ikke fortælle — hvordan en dansk virksomhed kan give arbejde videre til en AI-kollega. Svaret blev cases.grn.dk: en selvstændig interaktiv side, hvor den besøgende skriver en opgave, ser en AI samle den op, får et spørgsmål, svarer på det og ser det færdige kort lande øverst i Done. Briefen, domænet, designet, teksten, lyden og udgivelsen blev alt sammen håndteret af det AI-setup, siden beskriver.

GrN.dk — internt projekt

AI-receptionist / SMV-automatisering

En AI-receptionist, der aldrig går glip af et opkald — med baglokalet på skærmen

Frontdesk 24/7 er en AI-receptionist for et fiktivt dansk VVS-firma, Nordlys VVS, som man taler med, som en kunde ville — med stemme eller tekst, i og uden for åbningstid. Demoens pointe er den delte skærm: mens receptionisten svarer til venstre, animerer baglokalet til højre — kalenderen booker sig selv, kunden lander i CRM, der går en bekræftelses-sms afsted, og ejeren får besked. Intet beskrives; alt vises, mens det sker.

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

3D på nettet / produktkonfiguratorer

Briller modelleret i Blender, konfigurerbare i browseren — helt ned til styrken i glasset

Optik №1 er et par acetatbriller bygget fra ende til anden i Blender 4.5 — modelleret, tekstureret, rigget og animeret — og derefter eksporteret som glTF og afspillet live med three.js. I browseren vælger man stel og glas, drejer en styrke ind på linser med ægte refraktion og træder ud i sollys for at se fotokromisk glas mørkne. En Cycles-renderet film og kildefilerne følger med den levende scene.

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

Vedligeholdelsesautomatisering / DevOps

Den kedelige superkraft: en ugentlig gate, der holder tolv sites' dependencies opdaterede

Tolv produktionswebsites på én server, hver med sit eget Composer-dependency-træ, og hostingens ældste spørgsmål: er de opdaterede — og er det sikkert at opdatere dem? Dependency-aktualitets-gaten svarer ugentligt og automatisk — den inventerer hver vhost, tjekker hvert dependency-træ mod den PHP-version, sitets webserver faktisk kører, sætter de semver-sikre opdateringer i kø til godkendelse og rapporterer de breaking i stedet for at anvende dem.

GrN.dk — serverflåde (12 produktions-vhosts)

Automatisering af mobiludgivelse — Flutter CI/CD, on-device acceptancetest, udgivelse til Google Play og App Store

Mit Håndværk udgiver sig selv i to app stores — og en rigtig telefon har vetoret

Mit Håndværk er en dansk markedsplads-app for håndværk, kunst og design — en Flutter-app på Android og iOS oven på en Laravel-backend, med abonnementer, realtidschat og push. Denne case handler ikke om appens skærme. Den handler om maskineriet, der sætter en ny version af den foran brugerne: en pipeline, der tager et commit på main og cirka ti minutter senere har udgivet det til Google Play production — men kun efter at releasen er blevet installeret og koldstartet på en rigtig Android-enhed og har overlevet det.

Samme pipeline dækker Apple fra en Linux-server, der slet ikke kan bygge iOS: et release-tag overdrager buildet til en cloud-macOS-maskine, som signerer det og uploader det til TestFlight — og selve tagget kan ikke pushes, medmindre appens abonnementer faktisk er godkendt og prissat i App Store Connect.

Alt i billedet ovenfor er aflæst af det kørende system: tællerne kommer ud af pipelinens egen log, og telefonpanelet er det screenshot, publiceringsgaten trækker af emulatoren ved hver eneste release.

Mit Håndværk — dansk markedsplads-app for håndværk, kunst og design (mithaandvaerk.dk); Flutter på Android og iOS, Laravel-backend

Webdesign / Drupal

Nyt design til grn.dk i fuld åbenhed: otte retninger, ét valg, ét live temaskifte

Sitet, du læser på, har designet sig selv om med den samme kort-drevne AI-pipeline, det skriver om. Otte komplette designretninger blev bygget som statiske previews ud fra sitets rigtige indhold — rigtige artikler, rigtige cases, begge sprog — og lagt side om side på demo.grn.dk. Én vandt. Den blev derefter til et helt nyt Drupal 11-tema, bygget i faser på det kørende site bag et login-preview, og slået til med én enkelt konfigurationsændring.

GrN.dk — dette site

Web / portefølje-infrastruktur

En demohylde, der passer sig selv: femogtyve builds fra 2019 til 2026, én PHP-fil og et sitemap, der følger med

demo.grn.dk er der, eksperimenterne bor: femogtyve af dem, fra en solopgangsberegner for Silkeborg fra XHTML-tiden til procedural WebGL, et Blender-planetarium, en krystalsal, en AI-receptionist, en britisk regnskabsautopilot og en dansk ERP-dag. Mange af casene på denne side åbner på en post på hylden. Hylden selv er én PHP-fil, der lister demoerne, grupperer dem i Featured og Tools, filtrerer, mens man skriver, og afleder sitemappet fra den samme liste — så en demo, der lander i webroden, er på hylden og i sitemappet, før nogen har skrevet om den.

GrN.dk — demo.grn.dk

Regnskabsautomatisering / britiske revisionsfirmaer

En kundes måned kører sig selv: fra bankfeed til indberettet momsangivelse, mens du ser på

AutoLedger er en guidet gennemgang for britiske revisionsfirmaer: én fiktiv kunde (Hazelbrook Coffee Roasters Ltd), én måned og en play-knap. Bankfeedet lander, hver transaktion kategoriseres med sin momsbehandling, bogføringen afstemmes, den nibokse MTD-momsangivelse udfylder sig selv og sendes til HMRC, og rapporterne tegner sig selv — mens en aktivitetslog fortæller, hvad motoren gør og hvorfor. Intet forlader browseren; kunden, banken og indberetningen er alle simuleret.

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

Browser- og mobilspil

Et mobilspil fra 2020, genopbygget til browseren — med global highscoreliste

veganpower.grn.dk er Vegan Power, et fang-frugten-arkadespil med en regel, man forstår på ét sekund: spis frugt, ikke venner. Frugt falder, og du fanger den. En kylling, en ko eller en pingvin falder, og du undviger den — hver gang du rammer én, koster det et af dine syv hjerter. Det begyndte i 2020 som et lille Flutter- og Flame-spil til Android, udgivet på Google Play samme december. I 2026 blev det skilt ad og genopbygget: det åbner nu i enhver browser uden installation og uden konto, fører en global highscore-tabel på sit eget lille API og har en multiplayer-beta, hvor to til fire spillere deler én arena og skubber hinanden væk fra frugten.

GrN.dk — internt projekt

Flutter / mobil- og webapps

Tredive Flutter-cases, hvor siden selv er appen — og en park, man kan gå rundt i

flutter.grn.dk er en hylde med tredive små cases, én pr. Flutter-pakke, der er værd at kende — routing, state management, animation, diagrammer, kort, lagring, i18n — og hver af dem er en levende demo, som den besøgende kan pille ved, med koden ved siden af og rigtige apps, der bruger pakken. Der er ingen skærmbilleder af Flutter på sitet: sitet er selv Flutter-appen, kompileret til web, med en rigtig URL pr. case, en side bag hver URL, som søgemaskiner kan læse, og en 3D-»casepark«, hvor hver case har sin egen stand.

GrN.dk — flutter.grn.dk

AI-governance / databeskyttelse

Et AI-kontrollag støbt i glas: se persondata blive til tokens undervejs

Kontrollaget gør usynlig AI-infrastruktur synlig. Det er en demo i tre akter for danske organisationer, på dansk og engelsk: skriv en prompt med persondata i, og se den flyve som tokens gennem et glasrør — PII-scanner, policy-gate, model-router — hvor hvert skridt skriver sig selv ind i en audit-log; gennemlev en amerikansk udbyders nedlukningsdag med og uden kontrollag; og prøv til sidst selv at slå anonymisereren i en live legeplads.

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

Læringsapps til børn

Lær at skrive thai — ét bogstav ad gangen

abc.grn.dk lærer et barn at skrive et alfabet i stedet for at genkende det: vælg et bogstav, tegn det efter med en finger, og appen scorer den form, du faktisk tegnede, og fortæller dig, hvor tæt på du var. Thai først — alle 44 konsonanter, gratis — med japansk hiragana og katakana bag en premium-gate. Alt sker i browseren: håndskriftsgenkenderen er ren Dart, der kører på enheden, de oplæste bogstavnavne er filer bundtet med appen, og der er ingen konto, ingen backend og ingen reklamer.

GrN.dk — internt projekt

Detailhandel — point of sale

Én kasse, mange sælgere: et markeds-POS, der deler hvert salg op pr. bod

Et point-of-sale-system til et fysisk marked, hvor snesevis af uafhængige sælgere deler de samme kasser. En kassemedarbejder slår én kurv ind; systemet ved, hvilken bod hver vare tilhører, deler salget pr. sælger i det øjeblik, det sker, og fører de bøger, hver bod afregner efter. Thai-først grænseflade med et synkroniseret engelsk oversættelsessæt, bygget på Laravel 12 med et Filament v4-adminpanel og PostgreSQL nedenunder.

Et community-marked i Thailand (kunden holdes anonym)

3D på nettet / Blender-pipeline

Et messing-planetarium bygget af ét Python-script i Blender, som drejer live i browseren

The Orrery er et messing-planetarium modelleret, tekstureret, rigget og animeret i Blender 4.5, eksporteret som glTF og afspillet live med three.js: et tandhjulstræk, der griber ind i hinanden under dækket, fire planeter og deres måner i heltalsbaner, en lysende sol med bloom, wireframe- og hastighedsknapper, træk for at kredse. Nedenunder den samme scene renderet som et sømløst Cycles-drejebordsloop — og .blend-filen, .glb-filen og det ene Python-script, der bygger det hele fra en tom scene.

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

Logistik / TMS-konfiguration

Et transportstyringssystem, du kan ødelægge på tres sekunder: fjorten ordrer omplanlagt for hver regel, du vipper

TMS Configuration Cockpit kører et lille transportstyringssystem i browseren: ét distributionscenter i Aarhus, tre lande, fjorten ordrer og et konfigurationspanel med præcis det, en TMS-applikations- og konfigurationsansvarlig ejer — forretningsregler, planlægningsparametre, fragttariffer, et ADR-workflow for farligt gods og koncern- kontra lokale landeskabeloner. Hvert håndtag, man rører, omplanlægger aftenens ture live, flytter KPI’erne, dukker op i EDI-grænseflademonitoren og skriver sig selv op som en ændringsanmodning. Den blev bygget som et fungerende svar på et jobopslags »hvorfor dig?«.

GrN.dk — demohylde (demo.grn.dk); bygget som en fungerende jobansøgning

ERP / open source-forretningssystemer

Der findes en verden uden for Microsoft ERP: én dansk grossists ordre, kørt på en åben stak

Udenfor følger én ordre gennem én dag hos Nordvind Foods, en fiktiv grossist i Aarhus med 14 ansatte og en webshop — på en åben stak i stedet for Business Central. Demoen spiller i tre akter: kameraet zoomer ud af Microsofts indhegnede have og ud på et levende systemkort, hvor en ordreagent, en open source-ERP-kerne på Postgres, lagerscanneren, GLS, NemHandel/Peppol-e-fakturering, en PSD2-bankfeed og skatteeksporten lyser op efter tur, mens finansbogen posterer sig selv; derefter stiller man bøgerne et spørgsmål på almindeligt dansk og ser SQL’en og svaret komme frem; og til sidst ændrer man en forretningsregel i én sætning og ser den testet og deployet på sekunder, ved siden af den 26-dages partner-ændringsanmodning, den erstatter.

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

Personlig automatisering, scraping af offentlige kilder og AI-assisteret filtrering

En privat jobradar, der læser syv portaler hver morgen — og kasserer det meste af det, den finder

Denne case har intet link på sig, og det er netop pointen: jobs.grn.dk svarer 401 til internettet og har altid gjort det. Det er et internt værktøj — en jobradar bygget til ejerens egen jagt på arbejde. Hver morgen læser den syv kontrakt- og jobportaler, dropper alt, der ikke kan matche en skreven profil, lader en sprogmodel bedømme det overlevende mod samme profil og præsenterer den håndfuld, der er værd at læse, som én skærm med tre knapper: søgt, udkast til mail, kassér.

Fordi den rummer ét virkeligt menneskes live jobsøgning, publiceres intet af den her. Screenshotet ovenfor er en engangs-demokopi af samme interface, seedet med opdigtede rækker — hvert firma, hver titel, lokation og adresse i den er en pladsholder, og den mærker sig selv "demo data" i headeren, så den aldrig kan forveksles med det rigtige board.

GrN.dk — internt projekt

Browserspil og sprogindlæring

Et 3D-browserspil, hvor hvert monster er et japansk ord

fantasy.grn.dk er コトバモン KotobaMon — et 3D-monsterfangerspil, der kører i en helt almindelig browserfane, og hvor hvert monster er et japansk ord. ヒバナ hibana er en gnist, コダマ kodama er en træånd, og at fange et er måden, ordet bliver lært på. Spillet har en procedureelt genereret ø med fem biomer, tolv arter, turbaserede kampe med et typeskema og fuld japansk voice-over med undertekster på japansk, romaji og engelsk på samme tid. Der er intet download, ingen konto, intet build-step og ingen backend: hele spillet er 2.821 linjer vanilla JavaScript plus en vendoret kopi af Three.js, serveret som statiske filer.

GrN.dk — internt projekt

Kontorfællesskaber og delekontorer

Bordbooking med betaling til et kontorfællesskab

Et dansk kontorfællesskab ville lade medlemmerne booke et bord pr. time og betale for det — for ved 20 kr. i timen pr. bord er en booking, der ikke er betalt, ikke en booking. tableflow.grn.dk er det system, bygget efter kundens brief og kørende live: et timegitter, der viser, hvad der faktisk er ledigt, en betalingsreservation på femten minutter, der frigiver sig selv, og en admin-skærm til dem, der driver stedet. Ren PHP og MariaDB — intet framework, ingen dependencies, 853 linjer i syv filer.

Dansk kontorfællesskab — kundebrief, bygget som fungerende demo

3D på nettet / produktpræsentation

En krystalsal renderet live i browseren — og profileret, til den kørte overalt

Kristallsaal er en smykkesal, man går igennem, og som kører helt i browseren: seks vitriner med slebne krystalstykker under museumsbelysning, et spejlblankt gulv og lys, der faktisk spaltes i farver inde i stenene. Der er ingen engine-download og ingen build-pipeline — én HTML-fil, ét JavaScript-modul og Three.js, serveret som statiske filer. Den findes for at besvare et kundespørgsmål med en demo i stedet for et slide: hvordan føles »3D-produktpræsentation på nettet« i den høje ende?

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

AI-indholdsautomatisering

Dette site skriver sine egne artikler — hver morgen, med en håndtegnet infografik

Artiklerne på dette site skrives af en pipeline: hver morgen scouter den, hvad der har ændret sig i webudviklings- og AI-verdenen, vælger ét emne, der er en praktikers opmærksomhed værd, skriver artiklen, tegner en infografik i skitsestil til den og publicerer — 138 artikler siden midten af april 2026, én om dagen, uden et stockfoto eller en billed-API-nøgle noget sted i kæden. En anden, bevidst langsommere instans kører på nowa.dk: én afskærmet artikel om ugen, med en kill switch.

GrN.dk (dette site) og nowa.dk

Kvantitativ research-tooling og automatisering

En trading-rig, der tester sine egne strategier hver time — og aldrig afgiver en ordre

crypto-dash.grn.dk er det offentlige vindue ind til en strategi-research-rig, der kører på vores egen server og træner sig selv. Hver time backtester den en frisk bunke konfigurationer af handelsstrategier mod femminutters kryptocandles, scorer hver enkelt på data, den ikke blev fittet til, fører et løbende leaderboard, promoverer de konfigurationer, der bliver i toppen, til en simuleret bog — og degraderer dem igen, så snart deres fremadrettede adfærd driver væk fra det, backtesten lovede.

Det er udelukkende paper trading. Installationen har ingen børsnøgler, kalder intet ordre-endpoint og har ingen konto at bruge af. Hvert fill, hver position og hvert P&L-tal på siden er simuleret — og derfor printer siden PAPER ONLY på sig selv, med orange, øverst i hver eneste timelige regenerering.

GrN.dk — internt projekt

Community-platforme / legacy-migrering

Femten års community-idéer, båret fra Drupal 7 til Drupal 11

Ideahunters er en crowdsourcing-platform, hvor brands stiller en challenge, og et community indsender idéer inden en deadline. Det oprindelige site kørte på Drupal 7 — end-of-life, uden support og i stigende grad en belastning — med over ti års challenges, diskussioner og medlemskonti i sig. Platformen blev genopbygget på Drupal 11, og legacy-indholdet migreret over: 426 stykker indhold og 921 brugerkonti, anonymiseret på vejen ind.

Ideahunters — platform for crowdsourcede challenges