Projects

~/projects $ ls # what I build at home and deliver at work

Work

Delivered in a professional context.

01 platform-consolidation live

Platform Consolidation

Migrating a New Zealand university off a standalone marketing platform onto its enterprise CMS and CRM — driven by the cost of running two products in the same functional space and paying for the same development twice.

  • migration
  • crm
  • cms
  • build-vs-buy
02 marketing-automation live

Marketing Automation Enablement

Event-based integration underpinning a marketing automation rollout across 60,000+ contact records — built as a reusable pattern rather than another point-to-point connection, so the fix did not become the next problem.

  • crm
  • event-driven
  • integration
  • enterprise
03 self-service-portal live

Self-Service Portal

Customer-facing portal for people holding several accounts across several systems, resolving them into one coherent view — AWS with a backend-for-frontend and OIDC. Product owner as well as analyst, working with the tech lead on the architecture and taking it through security review to pilot.

  • aws
  • oidc
  • identity
  • react
  • product-ownership
04 results-and-extensions live

Results & Extensions

Systemising how course results and extensions were captured and handled, integrating a learning management system, a CRM and a reporting layer — picked up after an earlier attempt had failed, and delivered.

  • integration
  • lms
  • reporting
  • process-design

Homelab

One system, built and operated in pieces.

01 homelab-platform live

Homelab Platform

Proxmox and ZFS on a single host — the virtualisation and storage layer everything else sits on, across roughly 25 containers and VMs. Sizing, isolation and storage layout decided once and written down, so adding a service is a decision rather than an experiment.

  • proxmox
  • zfs
  • lxc
  • virtualisation
02 segmented-network live

Segmented Network

MikroTik routing with VLAN segmentation keeping trusted, IoT, guest and infrastructure traffic apart, and Pi-hole authoritative for internal DNS. The firewall ruleset is version-controlled with daily drift detection — segmentation that stays segmented.

  • mikrotik
  • vlans
  • firewall
  • pi-hole
  • dns
03 infrastructure-as-code live

Infrastructure as Code

Ansible and OpenTofu managing the container and VM fleet, with Renovate keeping dependencies current — rebuilds are reproducible rather than remembered.

  • ansible
  • opentofu
  • renovate
  • iac
04 backup-recovery live

Backup & Recovery

Proxmox Backup Server running scheduled snapshots across the fleet, with retention policy and restore verification — the part most homelabs skip until the day it matters.

  • proxmox-backup-server
  • zfs
  • disaster-recovery
05 observability live

Observability Stack

Loki and Grafana aggregating logs across every host and service, with CrowdSec watching auth and edge traffic. Operating the lab, not just building it.

  • loki
  • grafana
  • crowdsec
  • monitoring
06 self-hosted-git live

Self-hosted Git

Forgejo on the LAN with step-ca issuing internal TLS — source control that does not depend on anyone else’s uptime, pricing, or terms of service.

  • forgejo
  • git
  • step-ca
  • self-hosted
07 home-automation live

Home Automation

Home Assistant with Zigbee2MQTT tying lighting, sensors, and the rest of the house together — local control, no cloud dependency, no vendor deciding when it stops working.

  • home-assistant
  • zigbee2mqtt
  • mqtt
  • automation
08 self-hosted-ai live

Self-hosted AI

Ollama running local inference, integrated via OpenClaw — useful models without handing the prompts to someone else. Provider chosen on where prompts travel and what the vendor retains; agent credentials scoped per identity, write access enforced in CI rather than in a prompt.

  • ollama
  • openclaw
  • ai
  • self-hosted

Side projects

Built for the sake of it.

01 ez-site live

This Site

The page you are reading — Astro static output, no tracking, no external font requests, deployed to Cloudflare Pages straight from a self-hosted Forgejo repo.

  • astro
  • typescript
  • cloudflare-pages