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.
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
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
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