PROJECT - WORK

What I build

Client work usually happens as a freelancer, under confidentiality - those projects can't be shown here. What I can show are products I build entirely myself in my own time, from architecture to interface.

All projects below are personal projects, not client work or case studies - I build them to stay sharp on techniques I don't use daily in client work.

01/03 - BOATGOD

Boatgod - boat planner for Old School RuneScape

A free planner for the Sailing skill in Old School RuneScape. Players enter their level and boat (raft, skiff or sloop) and see the best part they can build for every slot, plus a complete shopping list broken down to raw materials. For ironman accounts, Boatgod shows where each material comes from instead of the Grand Exchange. All data comes from the OSRS Wiki, and the page is prerendered at build time so search engines and AI crawlers can read it without JavaScript.

STACK
React 19 / TypeScript / Vite / Vitest
INFRA
Cloudflare Workers (static assets), prerendered HTML
STATUS
Live at boatgod.net
Boatgod plan view of a sloop with numbered parts and a parts schedule showing the best buildable part per slot
Plan view and parts schedule - best part per slot
Boatgod setup screen with levels, account type and which boats the player already owns
Setup - levels, account and fleet
Boatgod ironman bill of materials with sources per raw material and processing steps
Bill of materials - where ironmen get each material
02/03 - DECKPILOT

Deckpilot - Commander-first deck builder

A smart deck builder for Magic: The Gathering's Commander format. Instead of starting from a hundred empty card slots, Deckpilot begins with a single commander and a chosen power level, then guides the user toward a complete, legal, and coherent deck - including collection tracking, a browser for nearly a thousand sets, and automatic card updates via a local database.

STACK
Laravel 12 / PHP 8.5 / MySQL 8.4 / Redis / Meilisearch
INFRA
Docker (Laravel Sail)
STATUS
Actively in development
Deckpilot set browser with type, year and color filters, 985 sets found
Set browser - 985 sets, filterable by type/year/color
Deckpilot collection overview with 4,161 cards, 89 sets started and estimated value
Collection tracking - progress and value per set
Deckpilot detail view of the Final Fantasy set, 246 of 313 cards collected
Set detail - card-by-card progress
03/03 - SARONITE TABLE

Saronite Table - custom virtual tabletop for D&D

A custom-built virtual tabletop for D&D 5e campaigns, with session management, a live game board with initiative tracker, and real-time sync between players via Socket.io. The server follows a layered architecture (controller to service to repository to domain) so business logic can be tested independently of the database.

STACK
TypeScript (strict, ESM) / Fastify / Socket.io / SQLite (Drizzle) / Vite + PixiJS
ARCHITECTURE
pnpm monorepo - shared / server / client
STATUS
Actively in development
Saronite Table campaign overview with two active campaigns and options to start or join a new one
Campaign management - multiple tables, per-player role
Saronite Table live game board with tokens, initiative tracker and dice log
Live game board - tokens, initiative, dice log
Saronite Table login screen
Session access