I built every one of these myself, start to finish. None of it is client or company work, it's all mine. (Well, the law office is my dad's, but I built that one too.)

Spectrle Games
A daily-puzzle game paired with a print-on-demand business model. Each game shows a "Spectrle" (a spectrum of colors sampled from hundreds of frames of a film or video game) and you try to guess the title, getting hints along the way. Afterwards, you can buy a print, mug or shirt featuring this unique visual.
Built with
- React
- TanStack Router
- TanStack Query
- TypeScript
- Vite
- Firebase
- Tailwind
- Sharp
- Satori
- Framer
- Capacitor

MTG Herald
A native multiplatform app (Windows, iOS, Android) that listens through the microphone during a Magic game, recognizes spoken card names with a fine-tuned Whisper model plus Silero voice-activity detection and phonetic matching against the Scryfall catalog, and streams in matching cards in a continuously stacking carousel.
Built with
- Kotlin
- Compose Multiplatform
- whisper.cpp
- ONNX Runtime

UltraLeague
Create and run any kind of league: build rosters, draft players, schedule games, track standings, and see real-time updates. Drop in support for Discord integration as well.
Built with
- React
- TypeScript
- TanStack Router
- Firebase
- Tailwind
- Discord Webhook

Charles Sanford Law Office
A fast, static marketing site for a small law firm: home, services, team, testimonials, community, and intake forms. Designed and built end to end with Astro. I also designed the logo. Check out the Lighthouse scores!
Built with
- Astro
- Tailwind
- TypeScript