

Available for freelance work and consulting

// What I offer
// 01
Starting at £5,000
From concept to launch, I build fast, modern web applications. Whether you need an MVP to test your idea or a full product, I'll help you get there.
// 02
Starting at £3,000
Get a mobile app that works on both iOS and Android without the cost of building two separate products. Ideal for startups and small businesses launching their first app.
// 03
Starting at £500 per hour
Not sure which technology to use, or need guidance on your technical direction? I offer consulting sessions to help you make confident, informed decisions without the overhead of a full development engagement.
// 04
Starting at £300 per month
Keep your product running smoothly with ongoing support. Bug fixes, small feature additions, or general upkeep — I offer monthly retainers so you always have a developer on hand.
// What I've Built
// 01
A small app built to be a simple counter app. It allows you to create multiple counters and manage them all in one place.
// 02
This site was built using Next.js, React and TypeScript while using Supabase as a backend database. Originally I used WordPress to handle everything but it didn't meet the performance requirements I wanted. This encouraged me to find other options, one of which was building my own using Next.js.
// 03
Using Next.js I built a LinkTree alternative. A place for users to share a single link to all of their socials, and other links, in one place. Originally built using my own backend, users could create new links, edit them, and delete them. I later migrated to Supabase to make it easier to maintain and develop new features. This project is currently on hold while I handle a few other projects but I want to return to it soon!
// 04
SenseBot is a Discord bot I made using Discord.js. It has a variety of features such as a leveling system, moderation tools, and a currency system.
// 05
Tappr is a small game I made where the user taps a button on the screen to reach a high score. While I finished development in 2021, this is something I always return to. I treat it like a playground for me to test my skills and try out new things.
// 06
R6 Phoenix was an old Discord bot I made using DSharpPlus. I built it after a platform that was used to show user's their stats had to, unfortunately, stop operations. It was designed to show a users Rainbow 6 Siege stats. It was very basic, you'd enter a username and it would fetch the stats from Ubisoft. When a user was searched for I cached the username and stats in my own database to speed up query time, I ensured to only allow updates every few hours for a user to prevent spamming Ubisoft's servers and ensure performance.
// 07
A simple bot that would notify users when it is Wednesday, my dudes.
// 08
The EGL Project Path Manager is a tool I built to help manage my EGL projects. It was built using DotNet and WPF. The Epic Games Launcher doesn't, at the moment, have a way to select paths to look in when searching for Unreal Engine projects. This ends up in the EGL not being able to see your project, preventing you from managing the project from EGL and adding marketplace assets automatically. This can be fixed by adding your project directory to the EGL config file, however, this tool is designed to make that easier and faster. It isn't much, but it gets the job done.
// Get in touch
// Latest from the Blog
// 06

// 05
As you use Expo more and more, you'll notice EAS builds can take a while to process. We're going to look at how to automate EAS builds using GitHub Actions!
// 04
You may be wondering how to make custom App Icons for your apps made using Expo. It's pretty simple, with just a few tweaks.

// 03
Sometimes projects don't show up in the Epic Games Launcher. This is a very simple thing to fix. Read on to find out how.
// 02
An app version being displayed in a Settings or About screen isn't uncommon but how do we get that value from our React Native app built with Expo?

// 01
FNAF: Security Breach includes many bugs. One of the many bugs included is called "Giga Monty". This is what I feel causes this bug and a potential fix.