Blog
A clean, minimal, responsive personal portfolio blog built with PHP 8+ and PDO/SQLite for the backend, HTML5/CSS3 (Inter) and vanilla JS for the frontend, featuring a secure admin panel (password-hashed login, CSRF protection), post management with categories/tags and featured images, a Quill rich-text editor, clean URLs, and an RSS feed.
CMS
A clean, minimal, responsive content management system built with PHP 8+ and PDO/SQLite, with a frontend of HTML5/CSS3 (Inter) and vanilla JS. It includes a secure admin panel (password-hashed logins, CSRF protection), granular user and role management, page and module CRUD with a Quill rich-text editor, media/featured-image support, templating and site settings, clean URLs, and a lightweight setup/database schema for quick deployment.
Forum
A compact, responsive discussion forum implemented in PHP 8+ with PDO/SQLite and HTML5/CSS3 (Inter) plus vanilla JS. It provides secure authentication (password hashing, CSRF), user profiles and registration, categories, threads and post management, admin moderation tools (categories, threads, posts, users), a Quill-powered editor for rich posts, search and pagination, clean URLs, and safe PDO-prepared queries throughout.
Store
A minimal, responsive store module built with PHP 8+ and PDO/SQLite, using HTML5/CSS3 (Inter) and vanilla JS. Features include a product catalog with featured images, cart and checkout flow, order management and admin product CRUD, PayPal payments integration, secure admin auth (password-hashed logins, CSRF protection), basic inventory/order tracking, clean URLs, and backend safety via prepared PDO statements.
Calendar
A full-featured, responsive calendar web application built with PHP 8+ and PDO/SQLite for robust server-side persistence, and HTML5/CSS3 (Inter) with vanilla JavaScript for a fast, accessible frontend. Features include event creation and editing with rich descriptions, recurring event rules (daily/weekly/monthly/yearly), drag-and-drop rescheduling across day/week/month views, timezone-aware event times, configurable reminders/notifications, iCal (RFC 5545) import and export, search and filtering, keyboard accessibility, and optimistic client-side updates with server-side validation and prepared statements for security. Includes a simple admin interface for managing public calendars and import settings.
CactBridge (FFXIV Plugin)
A custom FFXIV Dalamud plugin written in C# (.NET) that integrates Cactbot alerts directly in-game. It was originally designed for SteamOS on Steam Deck, where Browsingway is harder to use smoothly and can cause noticeable FPS loss. It combines a local HTTP relay server, OverlayPlugin WebSocket subscriptions, an embedded headless Chromium runtime via PuppeteerSharp, and a Dalamud/ImGui overlay window with optional chat announcements.
404 Kingdoms
A full RTS mini-game hidden inside the 404 error page. Command an army of knights to rescue a kidnapped webpage from dragons. Features real-time strategy mechanics, unit selection, building construction, production queues, pathfinding, combat AI, fog of war, and hidden cheat codes, all built with vanilla JavaScript and HTML5 Canvas, zero dependencies.
Olate Download
Migrated the Amazing World Music website, which ran on Olate Download with many custom modules not designed to work together. Refactored all modules into a coherent codebase, secured and updated Olate Download for PHP 8.x compatibility, and published the fixes on GitHub. Afterwards, designed and built a new scalable, modular version incorporating all original features with a focus on clean architecture, maintainability, and extensibility.
Roombageddon
A 3D action game built in Godot 4.7 for Godot Wild Jam #94, where it placed 24th out of 115 entries. The player controls a robotic vacuum defending a household against everyday objects that have mutated into deadly foes, acquiring abilities along the way to fight back. Developed by myself and Rick Mann (rick.me.uk). I handled programming and level design, working across the ability system, enemy AI, wave spawning, player controller, HUD and UI, loot progression, charging mechanics, game state persistence, tutorial system, and audio integration.
Let Meowt
Another Godot Engine Wild Jam in the books. I teamed up with Rick Mann and Dianna Koh for GWJ 95, and we put together "Let Meowt" - a 90s-inspired 2D platformer built with Godot 4.7. Jam deadlines meant I could not dig into the core mechanics as much as I would have liked, but I handled the essential scaffolding: menus, scoring, the timer, and a radar HUD (though whether that last one made the final cut is debatable - it was pushed to GitHub about 15 minutes before the deadline!). It has been a great learning experience all the same.
Dianna Koh Portfolio
A custom portfolio website built for a friend, Dianna Koh, a graphic designer, digital artist, and animator. The site features a fully responsive design with a clean, modern aesthetic, and includes a secure admin panel with password-protected login for managing portfolio content. Key functionality includes image upload for gallery items with automatic thumbnail generation, category management for filtering work by type (Graphic Design, Animation, Digital Art, Branding, Illustration), and full CRUD operations for portfolio entries. Built with PHP 8+ and PDO/SQLite on the backend, with HTML5/CSS3 and vanilla JavaScript on the frontend.