Senior software developer. I build developer tools and React infrastructure — libraries with a clear contract, documentation that earns its keep, and tests that hold the line.
Headless React form engine — your backend defines the form, your frontend just renders it.
Conditional fields, validation, calculated values and repeaters live in a JSON schema the backend controls. Adding a conditional field stops being a frontend PR and becomes a schema change.
- Ships zero UI. The library owns logic and state; your app owns every pixel through a field registry.
- A small expression language behind
show/required/disabled/calculateValue, evaluated by a sandboxed AST interpreter — nevereval(). - Calculated values settle in one write, through a dependency graph built when the schema is parsed. A four-deep chain costs one render pass.
- A render-count contract enforced by tests: a field re-renders only when its own value, its own error, or a declared dependency changes.
- Repeaters as a first-class field, with per-row scoped validation and cross-row aggregates.
TypeScript · 324 tests · MIT · pre-1.0
Docs · Playground · Showcase · npm · Source
Customizable infinite text reel for React, built on GSAP.
Multiple reels with independent speed and direction, velocity that reacts to scrolling, optional stroke styling and container rotation.
React · GSAP · TypeScript
Chrome extension that adds a floating timeline to a ChatGPT conversation.
Every prompt in the thread becomes a timeline entry, so you jump straight to the message you meant instead of scrolling for it.
JavaScript · Chrome Manifest V3
TypeScript · React · React Native · Node.js · GSAP · Vitest · tsup