PHP - WordPress - jQuery

WordPress theme development including custom plugins for structured data and robust SEO. Every element was built with future customisation in mind, abstracting away the need for technical knowledge.

Harler image

Design Brief

When first approached, Dominic Harris of Harler provided me with a full design plan and mockup, focusing on the ability to deliver high volumes of content while remaining clean, breathable and maintainable. I was also given a full suite of images and icons to use.


While undertaking this project, I ran into a few key difficulties relating to the content structure - typically Wordpress is built for blogging. While this was perfect for posts under categories such as "Insights", it simply doesn't work for things like displaying the "Sectors we serve" and "Our team" sections - for this I had to build several custom plugins. At first, I began to toy with using a plugin to implement custom "types" and found it to be extremely limiting - this drove me to write my own. From a maintenance perspective, this ended up being a fantastic solution - turning the Wordpress Dashboard into a full, bespoke content hub for the client.

SEO & Content Structure

One thing that Wordpress is known for is having strong SEO/meta tag management - this project was no different. For each post category, it was simple to automatically generate all of the necessary meta tags which was key to help boost the client's presence on social media, specifically LinkedIn.

After overriding the default Wordpress homepage, I was able to completely take advantage of the built in post, category and tag pages - I simply applied the necessary CSS rules to a simple HTML skeleton.


Personal Portfolio image

Personal Portfolio

My new website to act as both a CV and showcase for projects. Featuring experience, education, projects and light/dark modes - it's built with Gatsby with speed and SEO in mind.

React - GraphQL - TailwindCSS

Wordle Solver image

Wordle Solver

A hilariously inefficient pseudo-brute-force solver for the viral web game Wordle - making use of NodeJS and Puppeteer to emulate a web browser and make educated guesses.

NodeJS - Puppeteer

Trampoline Difficulty App image

Trampoline Difficulty App

A web app that helps gymnasts and coaches calculate difficulty and “FIG Shorthand” for routines performed on Trampolines.

React - Express - MySQL

Classify image


Static site development using WordPress as a content backend - with several custom plugins to support various content structures. By taking advantage of Gatsby, the site feels extremely fast to use, even when navigating dynamic content.

React - Gatsby - WordPress