Projects
🎮 PlayProficiencies:
- LAMP Stack
- Javascript, HTML, CSS
- React
- Node.js
- Git
- Drupal
- Wordpress
- IoT
- DigitalOcean
- AWS
IsItUp
2025IsItUp is a Django-based uptime monitoring service using PostgreSQL and systemd timers to run independent background checks, record uptime history, and surface results in a dashboard. It required building a secure API, background execution, and full Linux deployment.
Highlights
- Automated Health Checks – configurable background checks for uptime and response time.
- Decoupled Background Execution – monitoring runs via systemd services/timers, independent of web traffic.
- Historical Uptime Data – stores and surfaces availability and latency over time.
- Secure API Access – API key authentication and rate limiting for data access.
FragVault
2025
FragVault is a Chrome extension that adds a clips tab to HLTV.org player pages, surfacing recent Twitch and YouTube clips for the player you're viewing. A Node.js/Express backend ingests clips on a schedule, stores them in MySQL, and serves them to the extension over a token-authenticated API.
Highlights
- Scheduled Ingestion Pipeline – a cron-style job pulls clips from configured Twitch (Helix) and YouTube (Data API v3) channels, enriches view counts, and upserts into MySQL.
- Signed API – every request is authenticated with an HMAC-SHA256 signature and timestamp replay protection, locking the backend to the extension.
- Abuse Protection – rolling-window rate limiting with auto-clearing cooldowns, plus IP-based watch on token registration.
- Operational Tooling – Discord webhook alerts on ingestion failures, daily intake summaries, and health/stats endpoints.
wizblast
2025
wizblast is a top-down 2D wizard-vs-zombies wave-survival roguelite, built from scratch in Godot 4.7. A spellcasting wizard faces an endless, escalating horde – cast and upgrade spells, breach barriers, and survive. Inspired by COD Zombies: procedural waves, a between-round upgrade shop, a Mystery Box, and Pack-a-Punch spell upgrades.
Architecture (the focus of the project)
- Data-Driven Content – spells, enemies, waves, upgrades, and status effects are all custom Godot Resources (.tres), not hardcoded. Adding a new enemy or spell is a single data file, scanned from the filesystem at startup.
- Event-Decoupled Systems – a single EventBus autoload is the only cross-system channel; HUD, audio, progression, and drops subscribe to gameplay signals and never reach into each other.
- Component-Based Combat – generic Hitbox / Hurtbox / Health / Mana components wire up damage, crits, knockback, and status effects for any entity, with RoR2-style on-hit/on-kill procs.
- Navmesh-Driven AI – enemies chase or fall back to breaching the nearest reachable barrier via navigation reachability and portal-steering, with RVO soft-crowd separation so packs overlap under pressure without deadlocking choke points.
Gameplay
- Endless procedural waves that scale count, spawn rate, and composition from the wave number, with periodic swarm and boss waves.
- Four spells – arcane bolt, chain lightning, channeled flamethrower, and ice shard – each with a Pack-a-Punch upgrade variant.
- A full run-progression loop: gold, a ~20-item upgrade shop, a Mystery Box, and a Pack-a-Punch machine.
- Juice-forward combat – hit-flash, hitstop, trauma-based screen shake, floating damage numbers, and dynamic 2D lighting.
6Aside league scraper
2025
Our local league's website is outdated and hard to use. I built a scraper and frontend that fetches results, fixtures, and the current table, then restructures everything into a clean, well-organized JSON object and presents it in a modern UI.
Highlights
- Clear view of upcoming fixtures and past results.
- Shows exactly which teams have played each other and the final scores.
- Readable, up-to-date league table.
How it works
- The scraper periodically fetches data and builds a fresh JSON snapshot.
- The backend serves the cached JSON for fast loads, avoiding unnecessary hits to the source site.
- The frontend renders fixtures, previous results, and standings in a simple, responsive layout.
This project blends web scraping, data modelling, and UI work to make following our league much more enjoyable.
Custom Business CRM
2024/2025
A full-featured Customer Relationship Management platform built from the ground up to streamline and automate business operations. Designed with scalability and security in mind, it provides a central hub for managing clients, bookings, payments, and communications.
Highlights
- Booking & Scheduling – integrated system for managing client appointments and lessons.
- Stripe Integration – supports one-off payments, subscriptions, and invoicing with secure transaction tracking.
- Email & Notifications – automated communication pipeline powered by SendGrid for confirmations, reminders, and updates.
- Role-Based Access – secure session handling with permissions tailored for admins, instructors, and clients.
- Customizable Tables & Graphs – dynamic data visualization tools for tracking business performance and insights.
- Secure Architecture – robust database design, session security, and modular components for maintainability.
Weather app
2024Displays real-time weather updates and room temperature data from a Raspberry Pi with BH1750 and BME688 sensors. Combines weather API data with a sleek frontend and supports RSS feed integration. Also displayed on a 20x4 LCD wired to the Pi.
Movie recommender
2023A React app that curates movie suggestions via a movie API. Built to streamline the search for quality films while sharpening React skills.
typeFaster
2023Multiplayer typing game inspired by TypeRacer. Utilizes WebSockets for real-time interaction and has secure user authentication. A proof of concept for leveraging modern web technologies.
Discord Bot
2023/2024A music bot for Discord that streams audio directly from YouTube. Integrated with FACEIT to display player stats. Some issues with ytdl caused random music interruptions.
chatbot
2023Voice-enabled chatbot using OpenAI's API and Chrome's speech recognition. An experiment in combining conversational AI with real-time input.
marketPlace
2022An eBay-style marketplace with Stripe integration for payments and secure login. Designed as a sandbox for PHP and Twig proficiency.
Other interests:
- Liverpool FC
- Favourite movie: Blade Runner 2049
- Bouldering
- Favourite series: Peep show
- CS2
- PC building/hardware
- IoT
- golf handicap: NaN ;)
Among other projects...
if you read this far you're the goat