My Projects

Land of Kittens Community

Laravel
VueJS
TailwindCSS

Land of Kittens is an online community that I've been running for over 11 years. We started as a small group of friends on IRC and have since grown to over 300 members spanning multiple platforms. We pride ourselves on being inclusive to people from all backgrounds, while staying small enough for everyone to feel heard. Although we don't have a specific focus, we do enjoy gaming and sharing memes.

Over the years, we've have a website allowing new people to discover who we are and what we do. This started as a simple HTML page, but has expanded to a full Laravel website with a Vue front-end. This serves as a learning exercise for me to learn more about Vue and expand my skills with Laravel. It uses APIs from Discord to populate areas such as our donators and moderators, and from Google to generate the calendar.

Visit our Website

StreamLurker

Rust
Bun
VueJS
TailwindCSS

Frustrated with how unreliable notification for Twitch streams were, I decided to create a simple Electron app that would alert me and allow me to watch my favourite streamers as soon as they went live. This was a simple project that I started in my spare time, but has since grown into a full application with multiple features.

Recently, I made the choice to port this over to another framework called Tauri as an exercise for learning the basics of Rust. This has made the application a lot faster and smaller, whilst keeping the same functionality. It's also streamlined the development process, and the pipelines for building the software have been greatly improved.

During the upgrade, I was able to streamline existing features such as Twitch Authentication, which now uses an OAuth2 flow to allow users to log in with their Twitch accounts instead of having to manually provide API keys. Now that the codebase is in a much better state, I plan to add more helpful features such as an import option for bringing your existing followed accounts into the app, more customisation options, and notification sounds.

View on GitHub

DualPing

NodeJS
Docker

I have my old ISP to thank for me creating DualPing. Due to various internet outages that would last from a few seconds to a few hours, I needed some software that would allow me to document everything automatically. Whilst this software is very specific to my own needs, it's also helped others with the same niche issue keep track of their issues too.

It works by pinging both a local IP address such as your router and a remote IP address to determine if an outage is occurring. It can then determine if it's an internet outage and log this to a calendar and to Discord with the start time, end time and duration. This has been an essential tool to prove how unreliable my internet was.

View on GitHub

My Homelab

I've always been interested in running servers at home, driven by a passion for learning more about networking and server management. I began by running Ubuntu on a few spare laptops, hosting various personal projects for fun. This hobby has since evolved into managing multiple rack-mounted servers in a Proxmox cluster, which now hosts websites, bots, and critical services for myself, friends, and my community.

This experience has significantly developed my skills in virtualisation, VLANs, software security, and high availability, while also helping to reduce costs compared to using cloud services. Most of my personal projects begin life in my homelab as a testing ground and often remain in production there as well. Some of the websites hosted on my homelab regularly receive tens of thousands of hits per day - all handled with ease thanks to the performance and reliability of the systems I've built.