Selected work

Things I’ve built.

Two sides of the same engineer. First the enterprise work: the complex features on regulated, large-scale platforms for global pharma and enterprise SaaS. Then the side projects, where I own every layer of a modern stack end to end. Different contexts; the same instinct for the hard part.

Enterprise SaaS · 2025–present

Schema-first codegen on AEM

One YAML per component generates the TypeScript types, Lit scaffolds, AEM dialogs and HTL: around 25 production AEM components (40+ with the Lit atoms). Lit 3, Vite 7, progressive hydration, zero-touch deploys. I authored the architecture and ~99% of the repo.

Global healthcare · 2021–2025

Clinical trial finder

A Solr-indexed trial registry on AEM + Vue 3. A dual pending/committed filter model serves four search entry points, a six-screen guided wizard, and a from-scratch screen-reader fix for an unopenable result-card menu.

Global healthcare · 2021–2025

Regulated forms platform

A markup-driven form engine for legally mandated safety reports, plus a from-scratch accessible combobox and ARIA grid date picker where the component library provided nothing.

Global healthcare · 2021–2025

Design system migration

A 37-component Lit 3 library running alongside a legacy HTL/Handlebars/Vue 2/jQuery stack, bridged by typed CustomEvent contracts, plus a pipeline that compiles real AEM templates inside Storybook.

Slipstream · 2026 · side project

Hand-built local-first sync engine

A Linear-style tracker on a sync engine written from scratch: optimistic mutations, server-authoritative mutation log, offline retry, Yjs CRDT text. Live demo + open source.

IronPulse · 2025–present · side project

Self-hosted fitness platform

Next.js 15, React 19 web + React Native 0.81 mobile, tRPC, PostgreSQL/PostGIS, offline-first PowerSync, passkeys, Stripe. Monorepo with autonomous deploy.

RadioShake · 2025–present · side project

Android + Wear OS internet radio

Kotlin, Jetpack Compose, ExoPlayer/Media3, Android Auto, standalone Wear OS app, Chromecast. 45,000+ stations from radio-browser.info. Shipped to Google Play.

Strata · 2026 · side project

A design system built to be rethemed

20 Lit web components on a two-tier token architecture with a documented ::part() surface. The proof: an entire alternative identity shipped as one CSS file. 151 axe-checked tests, live Storybook, open source.

Curb · 2026 · side project · in development

AI accessibility auditor with a self-check loop

Deterministic WCAG detection with axe-core, LLM-proposed code fixes re-verified by re-running axe on the patched DOM — the model never grades its own work. Live prototype + open source.

Want to talk about a project? Get in touch.