Full-stack developer and game designer. I build production software and multiplayer games with TypeScript, React, Node.js, and game engines.
trynibble.app | Available on Google Play
A production PWA that aggregates food, drug, device, product, and vehicle recalls from government agencies across 13 countries. Users get personalized safety alerts based on dietary needs, allergies, and location.
- Frontend: React + TypeScript, 48 pages, 14 languages, Capacitor for Android
- Backend: Express.js API with 48 automated ingestion pipelines sourcing data from FDA, Health Canada, FSANZ, TGA, EU Safety Gate, RASFF, and 30+ other agencies
- Data: PostgreSQL via Supabase, 108 migrations, full keyword extraction and classification
- Monetization: Stripe + RevenueCat (subscription model)
158K LOC | 1,134 tests | 48 data pipelines | 13 countries | 14 languages
Private repository -- available for code walkthrough in interviews.
Waypoint IEP Server -- MCP Server for Education
An MCP server that helps teachers differentiate instruction for students with Individualized Education Programs (IEPs). Given a lesson and a student's IEP, the server provides Claude with structured context to produce specific, actionable instructional modifications.
- TypeScript, Model Context Protocol (MCP 1.0)
- Multi-student differentiation with accommodation matrices
- Structured IEP data parsing, lesson plan analysis, and self-regulation checkpoints
- Built for the Waypoint Learning Challenge
48 tests
RogueEr -- Multiplayer Poker Roguelike
A multiplayer poker game where the rules mutate every round. Players vote on rule changes that alter hand rankings, card properties, and win conditions.
- TypeScript monorepo: Phaser 4 (client) + Colyseus (server) + shared game logic
- 30-rule mutation system across 3 categories (hierarchy, card property, composition)
- 4-stage hand evaluation pipeline with immutable state
- Full betting engine, spectator system, action replay
9.5K LOC | 180 tests
Fable -- Narrative Deckbuilder
A Slay the Spire-inspired deckbuilder in Godot 4 with a narrative layer. Features a passion system that shifts combat dynamics based on story choices, and dual-personality characters that evolve across acts.
- GDScript, Godot 4
- Combat engine, procedural map generator, branching event system
- Card/relic pools, status effects, shop and rest mechanics
- Uses the Copy All Errors Godot editor plugin for batch-copying debugger output
6.3K LOC
I contribute to the tools I build on:
- resend/react-email #3572 -- Merged a fix so uploading a template updates the existing Resend template instead of creating a duplicate.
- supabase/postgres-meta #1083 and supabase/postgrest-js #2461 -- A
bigint_astype-generation option for int8/numeric columns, so values past 2^53 stay lossless. In active maintainer review, designed together with a Supabase maintainer.


