My Projects

The Workshop Dashboard overview page: open workshop jobs grouped by status, with overdue counts

Workshop Dashboard

Job queues, LLM-powered quote extraction, courier tracking and customer emails for a medical-equipment repair workshop. Blazor Server on .NET 8 with 440+ tests, and a live demo on Azure.

  • C#
  • Blazor
  • .NET
  • Azure
  • LLM integration
The Central Coast Power home page: "Reliable electrical work, done right the first time", with call and free-quote buttons

Central Coast Power

The website for my dad's electrical contracting business: an Angular site covering services, service areas and a quote form, with a C# Azure Functions API that emails enquiries through Resend. Hosted on Azure Static Web Apps with a custom domain and deployed from GitHub Actions.

  • Angular
  • C#
  • Azure Functions
  • Azure
PackCracker's grid view of an opened Duskmourn Collector Booster, with each card's price and the most valuable card badged "Best pull"

PackCracker

Open Magic: The Gathering booster packs for free, built from each set's real collation data (MTGJSON), with a tear-open animation, card-by-card reveal and a saved collection with market values. An Angular app in front of a C# Azure Functions API with EF Core on SQL Server, JWT sign-in and 76 automated tests.

  • Angular
  • TypeScript
  • C#
  • Azure Functions
  • SQL Server

OpenGL Graphics Engine

A 3D engine in C++ and OpenGL with an entity-component system, PBR materials, shadow mapping, a day/night cycle and procedural clouds. A uni project where I was lead developer; it got full marks.

  • C++
  • OpenGL

Card Collection App

A console app for cataloguing a Magic: The Gathering collection, using the Scryfall API and SQLite, with a filter query syntax for searching it.

  • C#
  • SQLite
  • REST API

Trivia Game In progress

The real-time server for a Jackbox-style party trivia game: WebSocket lobbies and a game-phase state machine.

  • C#
  • .NET
  • WebSockets

Proxy Card Organiser

A WinForms app for keeping a library of Magic: The Gathering proxy card images organised: drag an image in to file it under a card name, then search the library and drag images straight out into other programs.

  • C#
  • WinForms
  • JSON

Crust Credit App

A WinForms app that replaced a paper list of customer store credit at a pizza store: add credits, then search by name or phone number as you type.

  • C#
  • WinForms
  • JSON