For AI agents: a documentation index is available at /llms.txt. Every page also has a Markdown version at its URL plus .md.

~/projects

Projects

Production work, open-source tooling, personal projects and graded exam work. Repo data is synced from GitHub.

GitHub synced: 15 Nov 2026 · 29 public repos

professional01

Illux Product AI

Generative-AI product enrichment & room visualization for Shopware 6

A production Shopware 6 plugin that turns product images into multilingual copy, SEO, categories and tags with generative AI, and lets shoppers see artwork on their own wall before buying. Designed, built and deployed as sole developer.

  • PHP 8.2+
  • Shopware 6.6-6.7
  • Symfony Messenger
  • RabbitMQ
  • Google Gemini
  • Generative AI / LLM APIs
open source02

Foundry

A polyglot engineering gate for AI-assisted development

One deterministic quality standard - format, lint, types, tests, coverage, security - enforced identically while an AI agent edits, before push and in CI. Reusable GitHub Actions workflows, mise templates and a Claude Code plugin, released as versioned open source.

  • GitHub Actions
  • mise
  • Python
  • POSIX shell
  • TypeScript
  • Semgrep
Aug 2026 - present
open source03

jev-tools

Three TypeScript tools that put a cheap, typed model in front of the expensive one

A monorepo of tools built on TypeSafe AI's Jev - an agent tool-call guardrail, a GitHub issue-triage Action and a bulk classification CLI - that run Jev on everything and hand only the uncertain cases to a human or a real LLM.

  • TypeScript
  • Node.js
  • Jev
  • GitHub Actions
  • Octokit
  • Vercel AI SDK
Sept 2026 - present★ 2
open source04

Leash

Keeps a coding agent to the project rules no linter can check

A Jev-powered guardrail that judges every agent turn against the un-lintable rules in your CLAUDE.md or AGENTS.md, and tells the agent exactly which one it broke so it fixes it before moving on. About 300 ms and a fraction of a cent per turn.

  • TypeScript
  • Node.js
  • Jev
  • Claude Code hooks
  • Codex hooks
  • OpenCode
Sept 2026 - present
personal05

Jobbuddy

AI job-application platform - from posting to tailored CV

A Spring Boot (strict hexagonal) + Angular platform that ingests job postings and generates tailored CVs and cover letters with ATS match reports, backed by Postgres full-text and pgvector semantic search.

  • Java
  • Spring Boot
  • Angular
  • PostgreSQL
  • pgvector
  • Flyway
May 2026 - present
personal06

Tech Atlas

A bilingual technical dictionary you can explore as a map

About 420 security, CS, AI and platform terms in English and Danish, linked by typed, sourced relationships into a knowledge graph with a 2D/3D explorer, plain-language explanations and quizzes.

  • Astro
  • TypeScript
  • Supabase
  • Cytoscape
  • Three.js
  • PL/pgSQL
personal07

Movie Explorer

One React codebase, running on the web and as an LG webOS TV app

A movie and TV browser that pulls titles from TMDB, adds IMDb and Rotten Tomatoes scores, shows where each title streams in your country and, on the TV, launches straight into the right streaming app. Same React tree for mouse and remote.

  • React 19
  • TypeScript
  • Vite
  • Tailwind CSS
  • TanStack Query
  • Firebase
professional08

Email Template Preview

Preview transactional emails with real order data, rendered like Gmail would

A Shopware 6 admin plugin that renders transactional email templates against live customer and order data, with Gmail-style and device emulation, so teams can QA mail before customers see it.

  • PHP
  • Shopware 6
  • Symfony
  • Vue
  • Twig
  • SCSS
approx. Sept 2025
personal09

MovieWheel

Spin a wheel, settle movie night

Filter, spin a 12-slot wheel and get a title plus where it streams. React on Cloudflare Workers, with the TMDB key kept server-side behind a rate-limited proxy that checks origin and path.

  • React 19
  • TypeScript
  • Vite
  • Three.js
  • Tailwind CSS
  • TanStack Query
personal10

DevInsight

GitHub activity turned into an evidence-based portfolio

Imports your GitHub repositories, measures activity, commit habits, structure and quality, and turns that into scores you can trace back to the numbers. .NET 10 and Angular 22, hexagonal, on PostgreSQL.

  • C#
  • .NET 10
  • ASP.NET Core
  • EF Core
  • PostgreSQL
  • Angular 22
Mar 2026 - present
open source11

jev-dotnet

A dependency-free .NET client for Jev

An unofficial .NET 8 SDK for TypeSafe AI's Jev - typed Choice, Score and Noul questions in, typed answers with calibrated confidence out - built on nothing but System.Net.Http and System.Text.Json.

  • C#
  • .NET 8
  • System.Net.Http
  • System.Text.Json
  • xUnit
Sept 2026 - present★ 1
open source12

jev-java

A dependency-free Java client for Jev

An unofficial Java 21 SDK for TypeSafe AI's Jev, with a sealed question hierarchy over records and truly non-blocking async calls - no runtime dependencies beyond java.net.http.

  • Java 21
  • java.net.http
  • Virtual threads
  • Gradle
  • JUnit
  • JaCoCo
Sept 2026 - present
open source13

jev-eval

Measure Jev on your own labeled data and get the confidence cut-point to gate on

A zero-dependency Python CLI and library that reports Jev's accuracy and calibration on your own labeled data, then recommends the confidence threshold for "auto-decide the confident cases, escalate the rest" - with an out-of-bag bootstrap so the number isn't flattering itself.

  • Python 3.10+
  • stdlib only
  • pytest
  • mypy
  • ruff
Oct 2026 - present
open source14

jev-rerank

Near-free relevance filtering and reranking for RAG

A zero-dependency Python library that scores each retrieved passage's relevance to the query with Jev in one batched call, then sorts and filters - at roughly a hundredth of the cost and latency of a hosted reranker.

  • Python
  • stdlib urllib
  • pytest
  • mypy
  • ruff
Sept 2026 - present
open source15

classifier-bench

Fast typed classifiers against Claude, measured on the same requests

A zero-dependency Python benchmark that runs TypeSafe Jev, OpenAI Decisions, Cloudflare Clef, Microsoft-Decision-1 and Claude on a frozen, labeled corpus of 2,321 cases, and reports match rate, calibration, p95/p99 latency and cost with bootstrap intervals and McNemar tests.

  • Python 3.10+
  • stdlib only
  • pytest
  • mypy
  • ruff
Oct 2026 - present
open source16

doppelscan

A syntax-aware duplicate code finder that hands an agent the helper to extract

Parses code with tree-sitter and finds clones with the same structure even when names and literals differ. Each clone group comes with the parameters, renames and template for the shared helper, as a CLI and as an MCP server any coding agent can call.

  • Rust
  • tree-sitter
  • rayon
  • MCP
  • clap
Oct 2026 - present
personal17

Plantekalender

A garden calendar that knows your plants and your local frost

An unreleased work in progress. Register your garden, beds and plants, and get sowing, pruning and harvest tasks tuned to your local climate, plus frost alerts and crop-rotation warnings. One product across a web app on Cloudflare Workers and native iOS and Android apps.

  • TypeScript
  • Hono
  • Cloudflare Workers
  • D1
  • React 19
  • Vite
Oct 2026 - present
academic18

Sall Whisky Distillery

One production domain, built twice - JavaFX and Spring Boot + Angular

Production management for a real whisky distillery - casks, distillations, warehouse hierarchy, maturation history and bottling - with genuine production rules, later ported from JavaFX to a Spring Boot REST API and Angular SPA.

  • Java
  • JavaFX
  • Spring Boot
  • Spring Data JPA
  • Angular 17
  • H2
approx. May 202410/12
academic19

Birdie

Log bird sightings where you stand; see everyone's on a map

A SwiftUI birdwatching app - log a species with notes and GPS in one tap, browse sightings as a list or on an interactive MapKit map. Firebase backend, MVVM with @Observable.

  • Swift
  • SwiftUI
  • Swift Concurrency
  • Firebase
  • MapKit
  • Core Location
approx. May 202510/12
academic20

KAS - Conference Administration

A JavaFX desktop app with real business rules

Conference administration - participants, hotels with room types and add-ons, excursions and bookings - with a pricing engine distributed across a rich domain model.

  • Java
  • JavaFX
  • OOP
  • MVC
approx. Dec 202310/12
academic21

TimeRegistry

One business core, two frontends - WPF and ASP.NET MVC

Employee time registration with real validation rules - overlap detection and a 37-hour weekly cap - behind interface contracts so a WPF desktop client and an ASP.NET MVC web app share one core.

  • C#
  • .NET
  • WPF
  • MVVM
  • ASP.NET MVC
  • Entity Framework
approx. May 20257/12
academic22

StableHand

Booking and management for a real riding school

A multi-actor booking system for Hørning Rideskole - horses, riders, time slots, a mucking-out reward rota and payments - with a hand-written ADO.NET data layer instead of an ORM.

  • C#
  • ASP.NET MVC
  • ADO.NET
  • Azure SQL
  • BCrypt
approx. May 202510/12
academic23

Yatzyweb

Multiplayer Yahtzee with server-authoritative scoring

Browser Yahtzee on Node.js/Express with a framework-free client, server-side scoring that can't be tampered with, and crash-safe persistence after every action.

  • JavaScript
  • Node.js
  • Express
  • Pug
approx. Mar 2025
academic24

Multiplayer Maze

Real-time multiplayer over raw TCP sockets

A Pac-Man-inspired maze game with a hand-designed text protocol, one server thread per client and a synchronized broadcast relay - played by several people at once on a real LAN.

  • Java
  • JavaFX
  • TCP sockets
  • Multithreading
approx. Oct 2024
academic25

EmployeeApp

A textbook n-tier .NET solution with three clients

One Entity Framework business/data core behind an ASP.NET MVC web app, a WPF desktop client and a standalone ASP.NET Web API.

  • C#
  • ASP.NET MVC
  • WPF
  • ASP.NET Web API
  • Entity Framework
command.exeesc

↑↓ select · Tab complete · Enter run · Esc close

doom.exe

WASD move · ←→ turn · Space fire · E use · Shift run · Esc menu · click to capture mouse · licences