Skip to main content

Projects

Things I've built

Libraries I maintain and testing tooling I built because I needed it, plus the products I've shipped as an engineer on a team. Star and install counts are live from GitHub and npm.

Open source

  • state-in-url

    410
    5.0k/wk

    Stores nested, typed state directly in the URL via React hooks. I built it because I needed a fast, convenient way to preserve state on page reload and share page links.

    • React
    • TypeScript
    • Tailwind
    • Next.js
    • Remix.js
    • react-router
  • A reusable horizontal scroll component. TypeScript, well tested, and used in production dashboards I never get to see. Maintained for years across multiple React majors and refactored along the way.

    • React.js
    • CI/CD
    • storybook
    • npm
  • VCR for Playwright — records real API responses once, then replays them deterministically on CI. Covers Next.js SSR, browser, and WebSocket traffic with no backend and no hand-written mocks. I built it because every flaky e2e run traces back to the network.

    • TypeScript
    • Playwright
    • Next.js
    • WebSocket
    • e2e
    • npm

Client & product work

Closed-source commercial work — the write-ups cover what I owned and what shipped.

  • The merchant-facing dashboard for Omise's payments platform: three years architecting and maintaining it in React, GraphQL, and styled-components, plus an internal D3.js analytics dashboard and a JavaScript SDK bridging a native mobile wrapper to JS mini-apps.

    • React
    • GraphQL
    • styled-components
    • D3.js
    • Payments
    • SDK
  • A B2B hiring platform startup. Built the UI to match the design closely, refactored code, adapted it to mobile, and wrote Playwright tests the team actually relies on.

    • React.js
    • Next.js
    • TypeScript
    • Playwright
    • B2B

Available for full-time remote work in EU timezones, 40 hrs/week.

Get in touch