Senior full‑stack Shopify developer.
7+ years building and owning production Shopify systems: storefronts, custom apps, Functions, checkout and POS extensions, and the integrations that connect Shopify to NetSuite (via Celigo), product catalogs and the rest of the business.
What I work with every day.
Languages & frameworks
Shopify platform
Data & integrations
Testing & delivery
Production systems, not side projects.
Control center for 10 Shopify stores
A toolkit I designed and own that runs changes across a $100M+ furniture brand's 10 international stores (US, Canada, UK, EU, France, Germany, Gulf, Australia, Singapore, global). 100+ validated GraphQL operations, dry-run by default, a reviewed and signed approval before any write, a test store first, before-snapshots for undo, and automated checks after every change. 900+ logged jobs.
Custom Shopify apps
Embedded admin apps with Polaris and App Bridge: an FAQ app on PostgreSQL with Prisma, and a media-sync app that keeps product galleries identical across stores. Built, deployed and maintained in production.
Functions & extensions
Discount Functions and a cart-transform Function for bundles, covered by Vitest tests. Checkout UI extensions (checkout chat, payment messaging, delivery estimates), admin extensions and POS UI extensions.
Integrations & data pipelines
A real-time Gorgias-to-Zendesk sync bridge (webhooks, serverless on Vercel). NetSuite work with SuiteScript and Celigo flows between NetSuite and Shopify, Akeneo product data, inventory sync apps, and cross-store catalog and media pipelines.
A high-stakes production launch
Led the Shopify build for the Barbie DreamHouse™ collection across the US and Canadian stores: about 30 tracked tasks in launch week. On launch night a stock-routing problem was found and fixed across 65 warehouse locations, 1 min 26 s after approval.
Taking over code I didn't write
Inherited agency- and contractor-built stores and apps, audited them, documented every change in Confluence, and added the guardrails that were missing: PR preflight checks, theme-check, tests, preview environments and plain-English change reviews.
From ticket to production, safely.
Nothing goes straight to a live store. Every change moves through planning, isolated development, staging review and a scheduled release.
- 1
Plan the sprint
Work starts as a Jira ticket with a clear goal and acceptance criteria, prioritized with the team in sprint planning.
- 2
Build in isolation
Every ticket gets its own branch off staging and its own development theme, so work never touches the live store.
- 3
Review on staging
Automated checks (theme-check, lint, tests) run on every pull request, and stakeholders review a staging preview before anything ships.
- 4
Release on a schedule
Staging is promoted to production in a weekly release, test store first, with before-snapshots so any change can be rolled back.
- 5
Document for handover
Every change gets a plain-English write-up in Confluence, so anyone on the team can pick up the work.
Led a 4-person overseas team
Ran sprint planning and Jira boards across time zones, using agile, and set the standards the team shipped to.
Scaled tech teams
Put the onboarding, coding standards and review process in place so a team can grow without slowing down.
Documented for transfer
Code, decisions and changes written up so work survives handovers, vacations and new hires.
Tied to revenue
Launches, checkout and speed work prioritized by its impact on sales, then measured after release.
Agentic, with guardrails.
I use AI agents for the heavy lifting and put engineering discipline around them, so speed never costs reliability.
- Dry run by default: every write is previewed before it runs
- A reviewed, signed approval before anything touches production
- Test store first; a failure stops the rollout
- Before-snapshots for every change, so it can be undone
- Automated checks after every change: 4 screen sizes, accessibility, Lighthouse, pixel diffs
- Every change documented in plain English for the team
- checkWhere is the new Rosewood finish stocked?
- foundAll 13 Rosewood pieces sit in 1 warehouse. Every other finish ships from 6.
- riskEvery Rosewood order would ship from one place.
- planStock Rosewood at the other 5 US warehouses: 65 changes. Prices and quantities untouched.
- youApproved · 9:11 PM
- errorRun 1: Shopify rejected the request. Nothing changed.
- fixAdded the unique key Shopify requires, re-checked with a dry run: 65 to do.
- okRun 2: 65 / 65 stocked in 43 seconds.
- done9:13 PM · 1 min 26 s from approval to finished.
What I bring, with proof.
| Skill | Where I've used it in production |
|---|---|
| TypeScript and JavaScript, front end and back end | Embedded Shopify apps in TypeScript and React; Node.js tooling that runs a 10-store international brand |
| React in production | Remix and React Router apps with Polaris and App Bridge |
| Node.js backends and APIs | Node.js command-line toolkit; serverless webhook bridge between Gorgias and Zendesk |
| Shopify apps, themes and API integrations | 2 theme codebases, 100+ Admin GraphQL operations, custom apps, Functions, checkout, admin and POS extensions |
| PostgreSQL and Prisma | Prisma on PostgreSQL for app data |
| REST and GraphQL APIs | Admin GraphQL across a 10-store brand; REST and webhooks for Gorgias, Zendesk, Okendo and Confluence |
| ERP and PIM integration | NetSuite (SuiteScript) connected to Shopify through Celigo, and Akeneo product data |
| International, multi-market stores | A 10-store brand across 8 countries with Shopify Markets and localized content |
| Tracking and analytics | Customer Events pixels, GA4, Google Ads and Meta conversion tracking, including audits for double-counted events |
| Product feeds | Google Merchant Center feeds and launch handoffs |
| Owning unfamiliar codebases | Took over agency-built stores and apps; audited, documented and standardized them |
| Automated testing | Playwright (4 screen sizes, accessibility, Lighthouse, pixel diffs) and Vitest for Functions |
| High-volume business data | Inventory, catalog and media changes across stores: 365 templates in one run, 580 images, 65 stock locations in 43 seconds |
| Explaining trade-offs to non-technical people | A plain-English review before every change and a Confluence page after it |
| Python scripting | Scripts that scan and transform theme files across stores |
Comfortable as a solo developer or embedded in a team, with full ownership of what I ship.
At Shopify Editions.dev every year.
I go to Shopify's Editions.dev developer conference every year and follow Shopify's developer changelog closely, so the systems I build use the platform as it is today.
Three years running: 2024, 2025 and 2026.
Recent platform changes I've already shipped:
- Discount Functions on Shopify's unified Discount API
- Apps on Shopify's React Router template with Polaris web components
- Theme blocks in a production theme
- Checkout UI extensions
- Admin GraphQL on recent quarterly API versions
Hiring a Shopify developer?
I'm based in Montréal and work in English and French. Happy to walk through any of this code and the decisions behind it.