Portfolio

My Work

Internal tooling, IoT platforms, and freelance builds. A selection of what I've designed and shipped.

Case Studies

6

ValidationPortal

ValidationPortal

Jul 2013 – Mar 2024

The internal tool I built from the support desk at Eseye. About forty people across support, finance, sales and dispatch used it every day, and it outlived the rewrite meant to replace it.

Perl PHP JavaScript Bootstrap MySQL +8
Migrating 1.2 Million IoT Devices

Migrating 1.2 Million IoT Devices

Designed and shipped the multi-threaded Perl orchestration that moved 1.2M cellular IoT devices off Cisco Jasper onto Eseye's Integra platform, with under 30 minutes downtime per unit and no customer revenue lost.

Perl MySQL Cellular IoT Jasper Control Center Integra +1
NearestForest

NearestForest

Aug 2026 – Present

A free app that shows you the nearest Forestry England forests, closest first, and sends you there in one tap. It works with no phone signal, covers 904 forests and car parks, and has no sign-up, tracking or adverts. Designed, built and deployed in a day.

JavaScript PWA Service Worker Python PHP +3
View project →
ProgressBoard

ProgressBoard

Jul 2026 – Present

A cross-project work board for building with AI agents. Cards are markdown files inside each project's own repo and the folder is the state, so a state change is a git diff. Built after classifying 35 open cards and finding 26 of them were decisions waiting on me, not work waiting on a developer.

Laravel PHP 8.4 Blade Pest Git +2
PlanHawk

PlanHawk

Jul 2026 – Present

One system of record for UK fire and building-safety consultancies: enquiries, projects, marked-up floorplans, issued reports and the money still owed, with every change kept. Multi-tenant, built on a temporal data model, and live as a demo.

Laravel 13 PHP 8.3 PostgreSQL Inertia Vue +3
View project →
Homelab

Homelab

Oct 2026 – Present

An old workstation rebuilt as a Proxmox server: a NAS, Home Assistant, photos, git and a dozen apps, each with its own HTTPS name, none of them open to the internet, and a status page that checks every one each minute.

Proxmox TrueNAS ZFS Docker Caddy +5

Professional & Client Work

3

Product Builds

5

WinVault

WinVault

Apr 2026 – Present

A UK prize competition platform designed to sit firmly outside the Gambling Act 2005 (free entry routes on prize draws, genuine skill questions on Q&A comps), with the full compliance stack in place from the start: GDPR, KYC, self-exclusion, geo-restriction, VAT handling, and audited random draws.

Laravel PHP TailwindCSS React + Inertia.js MySQL +4
View project →
Constellia

Constellia

Mar 2026

An in-progress personal build, currently paused: a self-hostable Discord alternative with real-time chat, forum channels, voice and video, and end-to-end encrypted DMs using the Signal Protocol, running on infrastructure you own.

TypeScript React 19 Vite 6 Node.js 20 Fastify +11
Regenesis – Guild Officer Dashboard

Regenesis – Guild Officer Dashboard

Apr 2026 – Present

Officer dashboard for the Regenesis (Silvermoon-EU) WoW guild. Pulls roster history from an in-game addon, attendance and event data from Raid-Helper, character progress from wowaudit and Raider.io, and renders the lot as Discord-role-gated widgets with a built-in event creator that publishes back to Raid-Helper and out to Google Calendar.

Laravel 12 PHP 8.4 MySQL Blade Alpine.js +11
View project →
Calendar

Calendar

Jun 2026 – Present

One self-hosted calendar across Google, Microsoft and iCal feeds, built to replace a paid subscription. The providers stay the source of truth; mine is a cache that keeps up with them.

Laravel Inertia Vue Google Calendar API Microsoft Graph +1
StudyHelper

StudyHelper

Apr 2026 – Present

A Claude-powered study assistant that breaks academic coursework into bite-sized questions and drips them to you over Telegram, one at a time, so you can tackle them without getting overwhelmed (or bored) by the repetitive bulk.

Python python-telegram-bot Anthropic API SQLite YAML +1

Tools & Utilities

2

Game Add-ons

9

Vendorer

Vendorer

Jul 2016 – Present

Improved merchant frames for World of Warcraft: wide grid with up to 20 items visible, text-based filtering, one-click junk/unusable selling with smart NPC ignore handling, stack-split bulk purchasing, auto-repair with optional guild funds, rarity borders, and transmog integration. Originally by Sonaza; I'm maintaining it for the current game client.

Lua XML
View project →
DjinnisClassProfiles

DjinnisClassProfiles

Apr 2026 – Present

When gear drops, it tells me which of my druid specs want it and what it does to my stat targets. On any class it saves action bars and talent builds and puts them back. My biggest addon, fed by a gear-plan and talent pipeline outside the game.

Lua PowerShell Python Warcraft Logs API SimulationCraft
DjinnisDataTexts

DjinnisDataTexts

Mar 2026 – Present

About thirty information panels for World of Warcraft (guild, friends, saved instances, currencies, bag value and more), each with a rich clickable tooltip, for any LDB display addon such as ElvUI or Titan Panel. Published on CurseForge with a scripted release pipeline, and hardened against the 12.1 "secret value" changes.

Lua XML
View project →
DjinnisVendorer

DjinnisVendorer

Apr 2026 – Present

Improved merchant frames for World of Warcraft: a wide searchable grid, one-click junk and unusable selling, bulk buying and auto-repair. Originally by Sonaza (2016, MIT); I took it over and ported it to Midnight, including a fix for a function Blizzard removed in 12.1.

Lua XML
DjinnisWarbandManager

DjinnisWarbandManager

May 2026 – Present

At the bank, it moves gold and auction stock between my characters toward a target set for each one, based on what that character is for.

Lua PowerShell

DjinnisUIEnhancements

Aug 2026 – Present

Small fixes to the default interface: target frames per boss, druid resource bars, and a workaround that keeps two auction addons from fighting over the same window.

Lua

DjinnisDelveTracker

Aug 2026 – Present

Tracks the Midnight Delver's Call quests and predicts what handing in my banked stack would pay, calibrated from real hand-ins rather than worked out from the buffs.

Lua

DjinnisCircularBars

May 2026 – Present

Action bar buttons laid out in circles and arcs, with paging, show and hide conditions and Edit Mode support, built so nothing breaks in combat.

Lua XML

ElvUI Multi-Account Status Texts

Jun 2025

A World of Warcraft UI add-on extending ElvUI functionality for multi-account players.

Lua World of Warcraft API

Experiments

2