Projects
Some systems I've designed and built.
Azure Data Integration Platform
2024 - PresentEvent-driven, cloud-native integration platform on Azure Service Bus, Functions and Event Grid - integrating core business systems and external APIs.
- Azure
- Service Bus
- Functions
- Event Grid
- Event-driven
Repairs Workflow Engine
2025 - PresentA repairs system that models each repair process as a dynamic graph of steps, guiding technicians through variable procedures. Replaced unstructured ticketing and enforced consistent data entry and process compliance.
- C# / .NET
- Workflow
- Domain modelling
Dynamics 365 CRM
2022 - PresentStood up Dynamics 365 as the company's first real CRM, designing the architecture and schema, integrating it with the ERP, and adding CI/CD and extensive customisations - JavaScript SDKs and .NET Framework plugins.
- Dynamics 365
- CRM
- Data migration
- ERP integration
- CI/CD
- JavaScript
- .NET Framework
- Plugins
- Power Automate
- Logic Apps
Customer Portal
2022 - PresentA customer-facing portal built on Power Apps Pages and backed by Dynamics 365, giving customers secure access to their own data and self-service actions. Consulted directly with a key customer to scope requirements.
- Dynamics 365
- Power Pages
- HTML
- CSS
eCommerce Migration
2023 - PresentReplaced a legacy, vendor-locked storefront with a BigCommerce platform integrated with ERP and CRM - delivering a polished, per-customer branded experience. A library of opt-in features lets the sales team tailor each client's storefront without custom code, making rich customisation affordable to maintain. Helped win contracts worth a combined $10m+/yr.
- BigCommerce
- Auth
- eCommerce
- Stencil JS
- Javascript
- REST APIs
- GraphQL
Data Warehouse
2026 - PresentA data warehouse on Microsoft Fabric, built as a medallion-architecture lakehouse with Spark Python notebooks and surfaced through Power BI to give the business actionable insights.
- Microsoft Fabric
- Lakehouse
- Spark
- Python
- Power BI
Blazor Internal-Tools Framework
2025 - PresentA .NET Blazor framework that generates forms and pages from C# class definitions, cutting development time for new internal tools from weeks to days.
- .NET Blazor
- Code generation
- Internal tooling
Azure Deploy GitHub Action
2025 - PresentBuilt a GitHub Action standardising CI/CD for Azure Functions, App Service, and Bicep deployments - automated testing, multi-environment deploys, and rollback.
- Azure
- GitHub Actions
- Bicep
- CI/CD
- Functions
- App Service
Documentation Platform
2024 - PresentA documentation monorepo built with Obsidian, the Quartz static-site generator and Azure Static Web Apps - publishing separate sites for internal development docs, company-wide docs, and customer help docs.
- Obsidian
- Quartz
- Azure Static Web Apps
- Documentation
Documentation Sites
Personal 2026 - PresentThis monorepo of Astro sites - smart-home, homelab and home docs - built with Astro, Starlight and Tailwind.
- Astro
- Starlight
- Tailwind
Customer Authentication
2022 - PresentSelected an off-the-shelf CIAM (Azure AD B2C) over building auth in-house, authored custom B2C policies for the sign-in and sign-up flows, and built middleware to integrate the CIAM with BigCommerce - giving customers one identity that signs them in across every service.
- Azure AD B2C
- CIAM
- BigCommerce
- Auth
Service Portal
2026 - PresentA .NET 10 Blazor single-page app letting customers log and track service requests themselves, with live status notifications fed from the repairs workflow engine and single sign-on through Azure AD B2C.
- .NET 10
- Blazor
- SPA
- Azure AD B2C
- Cosmos DB
- Azure Service Bus
Customer Portal Rebuild
2026 - PresentRebuilt the customer-facing portal on a Next.js and React front end (shadcn/ui, Zustand) backed by a .NET API, to support role-based access control with fine-grained permissions and a complex reactive UI the previous platform could not. Prisma over the data layer.
- Next.js
- React
- shadcn/ui
- Zustand
- .NET API
- Prisma
- RBAC
Internal Admin Console
2023 - PresentA .NET 10 Blazor website giving staff a single place to configure and manage customer eCommerce stores, run the many small operational processes that keep them running, and drive the repairs workflow engine - secured with Entra ID.
- .NET 10
- Blazor
- Entra ID
- APIs
Sales Lead Router
2023 - PresentAn Azure Function and Teams bot that routes incoming sales leads to the right Teams channel and lets staff action each lead directly from within Teams.
- .NET
- Azure Functions
- Teams Bot
Reusable Bicep Modules
2026 - PresentA library of reusable Bicep modules providing consistent, composable building blocks for provisioning Azure infrastructure across projects.
- Azure
- Bicep
- IaC
- Code reuse
Shared Class Libraries
2022 - PresentA set of .NET class libraries providing reusable domain models and shared code consumed across many of the company's projects.
- .NET
- Class Libraries
Developer Environment Automation
2024 - PresentAutomated developer machine setup with Microsoft Desired State Configuration, codifying tooling and configuration to speed up onboarding and keep environments consistent.
- PowerShell DSC
- Automation
- Developer experience
Security Scanning Pipeline
Deployed DefectDojo alongside a suite of open-source scanning tools to automate security scanning and centralise vulnerability management across the company's projects.
- DefectDojo
- DevSecOps
- Vulnerability management
- Automation
- Docker
Feedback Widget
2026 - PresentA small, embeddable JavaScript widget that prompts users for feedback and loads their responses straight into Dynamics 365.
- JavaScript
- Dynamics 365
JIWA ERP Plugins
2021 - PresentExtensive customisations to the JIWA ERP, built as .NET Framework 4.5.1 plugins. With the ERP poorly documented, the team built deep working knowledge of its internals by piecing together disparate sources and decompiling the application.
- .NET Framework
- JIWA ERP
- Microsoft SQL Server
Azure Function Rebuild
2025Engaged stakeholders to capture and clarify requirements, then designed and built a maintainable, scalable Azure Function to replace an existing implementation.
- Azure Functions
- PostgreSQL
Communication Support Unit
Personal 2024University capstone for the State Emergency Service: software-defined radios on Raspberry Pis stream radio repeater traffic to a web app, letting Communications Support Unit members listen from a browser.
- Azure IoT
- Raspberry Pi
- .NET
- Software Defined Radio
- Icecast
- Entra ID
Profile Backup Tool
2019 - 2020A PowerShell tool with a GUI that backs up and restores user profile data during device migrations, driven by CSV job files and robocopy with no external dependencies. Built for a major Perth mining company and used by technicians through a device rollout.
- PowerShell
- Windows
- GUI
- Automation
- robocopy
Alarm Monitoring
Personal 2026 - PresentWired a microcontroller into a home alarm and used open-source firmware to bridge it onto MQTT, then used Ansible to deploy the infrastructure - Node-RED and Ntfy.sh - that turns alarm events into push notifications on my phone.
- IoT
- MQTT
- Node-RED
- Ansible
- Ntfy.sh
- Docker