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.
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–2025Clinical 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–2025Regulated 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–2025Design 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 projectHand-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 projectSelf-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 projectAndroid + 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 projectA 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 developmentAI 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.