Shall we take a look at some projects I've done?
FitGlue
An automation platform for fitness enthusiasts who are tired of manually copying their workouts between apps.
Ever finished a killer workout on one app and then had to faff about re-entering it all somewhere else? Yeah, me too. FitGlue connects your fitness services together and automatically syncs activities between them, with some magical enrichment thrown in along the way – AI-generated descriptions, parkrun result lookups, and more.
It's built on a React frontend with a Go and TypeScript backend, all running on Google Cloud. The "Magician" design system ensures everything looks premium with glassmorphism effects and subtle animations. Because if you're going to automate your fitness life, it should at least look fancy.
Check out FitGlue GitHub ReposSkier
A custom static site generator, because the world definitely needed another one of those.
I kept finding myself building static sites and getting frustrated with the existing options – they were either too simple or required me to learn an entire framework just to render some HTML templates. So I did what any sensible developer would do: spent considerably more time building my own solution.
Skier is a task-based build system that transforms JSON and Markdown into static HTML. It handles everything from pagination to RSS feeds to SEO sitemaps. It powers this very website, the FitGlue marketing pages, and the Bingham Sunday Running Club site. Is it overkill? Absolutely. Does it bring me joy? Also yes.
Check out the docs GitHub RepoBingham Sunday Running Club
A full digital ecosystem for a small town running club that probably didn't need this level of engineering.
What started as "can you make us a simple website?" turned into a React-based race tracker app, a Skier-powered club website, and an automated CI/CD pipeline that would make enterprise teams jealous. Every Sunday morning, the race director tracks laps on their phone, and by the time the slowest runner (hi, that's often me) finishes, the results are already live on the website.
Features include automatic personal best tracking, a runners directory with individual profiles, Spotify playlist integration, and even weather data enrichment for historical runs. Because nothing says "casual Sunday jog" like comprehensive data analytics.
Visit the club GitHub RepoState Management Examples
As a lover of state management in React (I know, what a weird thing to admit) I often get asked about my thoughts as to the best state management solutions out there.
Anyone who's delved into the mysteries and intricacies of managing state in React knows that that's a very naive question, which misses the big point that there are pros and cons to almost every approach, with some being suited to more complex codebases with multiple teams contributing, and others being far more manageable for single teams or solo developers.
So, I put together a lil website to showcase how to get started with a number of state management libraries. Take a look!
See those examples GitHub RepoPresentation Timer
A simple presentation countdown timer with music streaming for use on streams/presentations - because every stream could use some suspense and music!
When doing presentations, it's nice to have a countdown to the start at the beginning, and it's even nicer to have some music playing in the background. However, combining these two things usually means a lot of messing around with audio inputs/outputs, or you just resort to playing the music out your speakers and detecting it with your microphone, or capturing your entire machine's audio.
Having the presentation countdown and the music playing in the same tab means most streaming tools can pick up the audio in a nice way.
Start that countdown GitHub RepoJanky Werewolf
A browser-based version of the Ultimate Werewolf card game
Created during the great-lockdown of '20, my friends and I adore the Ultimate Werewolf game, and would play it every evening whenever we met up. However, as meetings turned virtual, there was no way to do this! So what did we do as a bunch of CompSci nerds? Create our own web version of course!
The front-end is made in React, utilising Websockets to talk to lambdas that handle the running of the game and tracking of game state (aka who's dead Jim). The back-end is written by Michael Goddard, the big ol' Rust nerd.
GitHub Repo (FE) GitHub Repo (BE)ripixel.co.uk
This website! It's cool, isn't it? Why use a static site generator when you can just... y'know... write the HTML yourself?
As with all personal sites, I've been going back and forth on how to implement it for literally years. Should I go all swanky and amazing and use the latest tech? Should I show off all my awesome React skills?
In the end, I decided to go as simple-as-possible. This site shouldn't be all-singing-and-dancing, because it's not what's needed. What's needed is something super simple, clean, and most importantly quick. So, it's pure HTML and CSS, with a really simple template copy/paste script so I don't have to write the nav/header/footer out everytime. Neat!
Take me there GitHub Repo