Typed content
Next.js and Sanity connect structured content to reusable page sections, with draft preview and cache revalidation.
I design content-driven interfaces with React and Next.js, and build reusable Shopify storefronts. This website brings that approach together: architecture, interaction design, and a verified delivery workflow.
Next.js and Sanity connect structured content to reusable page sections, with draft preview and cache revalidation.
A shared UI kit brings together light and dark themes, responsive layouts, keyboard interactions, and reduced-motion support.
Storybook, automated tests, and CI support an AI-assisted workflow, with implementation decisions and releases reviewed by me.
Sanity
Structured documents and editorial content.
Next.js server
GROQ queries, validation, and typed page models.
Shared sections
Reusable components assembled from CMS data.
Your browser
Responsive pages, themes, and interactions.
Storybook
Components, states, and interaction checks.
GitHub Actions
Types, builds, automated tests, and delivery checks.
I built much of Gain’s frontend core: reusable components, product-page behaviour, shared media and accessible dialogs. Its architectural foundation was reused in Boutique, Ultra and Allure.

Manage content in multiple languages and assemble pages within the supplied design.
Linked Sanity documents and configurable sections, assembled into pages by Next.js.
Editors control page content and section order. The team has a shared development structure.

Since 2021, I have built websites, Shopify themes, and complex interfaces, designed shared functionality, and helped teams develop their projects.
I explore the task and its constraints, design a solution, and verify user journeys, responsive layouts, and performance.
Have a project, a technical challenge, or a collaboration in mind? Send me a message.