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.
~/projects $ ls # what I build at home and deliver at work
Delivered in a professional context.
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.
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.
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.
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.
One system, built and operated in pieces.
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.
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.
Ansible and OpenTofu managing the container and VM fleet, with Renovate keeping dependencies current — rebuilds are reproducible rather than remembered.
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.
Loki and Grafana aggregating logs across every host and service, with CrowdSec watching auth and edge traffic. Operating the lab, not just building it.
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.
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.
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.
Built for the sake of it.
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.