Shopify developer · Ho Chi Minh City

Storefronts that feel made, not assembled.

I design and build custom Shopify themes, theme sections and apps. Clean Online Store 2.0 code, components that work with a keyboard, and pages that load fast on a phone.

LiquidOnline Store 2.0Theme app extensionsAdmin GraphQLReact RouterCloudflare WorkersPostgres

Services

Four ways I can help your store

  1. 01

    Custom themes

    A theme written from scratch for your brand: JSON templates, section groups, colour schemes and typography settings your team can change in the theme editor without calling a developer.

  2. 02

    Theme customisation & sections

    New sections and blocks for Dawn or your current theme, such as variant pickers, size guides, bundles and landing page modules. They follow your theme's own conventions, so updates stay manageable.

  3. 03

    Shopify apps

    Embedded admin apps and theme app extensions, from webhooks and app proxies to billing and GDPR handling. Hosted on lean infrastructure that costs little to run.

  4. 04

    Speed, accessibility & QA

    Audits and fixes for Core Web Vitals, image loading, render-blocking scripts and keyboard access. Every change ships with a written test plan and before/after screenshots.

Selected work

Recent builds

Self-initiated projects on a Shopify development store, built to the same standard as client work.

Hemline product page for a merino crew knit with the colour dropdown open, listing colours with round swatches and a description line under each name.
Hemline home page with a full-width editorial hero image and the Northweave logo.
Closed colour dropdown showing a sold-out colour with a struck-through swatch and a Sold out pill.
Collection page with availability and price filters beside a product grid.

Theme · Online Store 2.0

Hemline

A complete theme for Northweave, a fictional slow-fashion apparel brand.

Problem
Apparel stores need a theme that shows many colours clearly, handles sold-out sizes well and stays fast, without stacking apps and libraries on top of a generic template.
What I built
A theme written from scratch: home, collection, product, cart, search, blog and customer account templates. It includes a colour dropdown with swatches, a description line under each colour and clear sold-out states, collection filters that update without a page reload, predictive search, a cart drawer and app block support.
Stack
Liquid, JSON templates, section groups, vanilla JS web components, one stylesheet, Shopify CLI and Theme Check in CI.
  • WAI-ARIA combobox
  • Storefront filtering
  • Section Rendering API
  • No jQuery
Dawn product page with a sold-out shade selected in the dropdown.
Shade dropdown open on a phone-sized screen.

Theme customisation · Dawn

Shade dropdown for Dawn

A custom variant selector for products with dozens of shades.

Problem
Dawn's default buttons turn into a wall of pills when a product has 20+ shades, and shoppers cannot see the colour or undertone before they choose one.
What I built
A select-only combobox that shows a swatch, a shade name and an undertone line for every option. It wraps Dawn's native select, so price, media, stock, the add-to-cart button and the variant URL keep working through Dawn's own code. Without JavaScript, the native select still works.
Stack
Liquid snippet, a small custom element, scoped CSS, and swatches read from native option swatches or variant metafields.
  • Keyboard & type-ahead
  • Sold-out handling
  • Theme editor settings
  • No dependencies
Product page with a sold-out size selected and a Notify me when available email form below the buy button.
App overview in the Shopify admin with setup steps, subscription counts and the most-requested products.
Email template editor with subject and HTML body fields next to a live preview.

Shopify app · Embedded admin

Back in Stock Alerts

Restock emails for sold-out variants.

Problem
When a size or colour sells out, interested shoppers leave and rarely come back. Merchants lose that demand and have no record of it.
What I built
A theme app block that collects emails on sold-out variants through a verified app proxy. Inventory webhooks trigger a deduplicated email to each subscriber once per restock. The admin includes a subscriber list with CSV export, an email template editor with live preview, a mail log and one-click unsubscribe.
Stack
React Router 7, Polaris web components, App Bridge, Prisma and Neon Postgres, Cloudflare Workers with Cron Triggers, Resend, and a theme app extension.
  • Webhooks & dedup
  • App proxy + HMAC
  • GDPR webhooks
  • Free-tier hosting

Process

How a project runs

  1. 01

    Brief

    We agree on the scope, the pages involved and what "done" looks like. You get a fixed quote and a timeline in writing.

  2. 02

    Build

    I work in an unpublished copy of your theme or a development store, with version control from the first commit, so your live store is never touched mid-build.

  3. 03

    Review

    You get a preview link, screenshots on desktop and mobile, and a checklist of what to try. Revisions happen here.

  4. 04

    Launch

    We publish together. You receive short documentation for the theme editor settings, and I stay available for follow-up fixes.

A light oak desk with an open notebook of hand-drawn page wireframes, a pencil and a terracotta cup.

About

Hi, I'm Thanh.

I'm a Shopify developer based in Ho Chi Minh City, Vietnam. I like the part of e-commerce where small details decide a sale: how a colour is shown, what happens when a size is gone, and how fast the page appears on a slow connection.

I work in English with clients in any time zone, write tidy commits and plain-language updates, and test my own work on real devices before I hand it over.

  • FocusThemes, sections, apps
  • Based inHo Chi Minh City, Vietnam (UTC+7)
  • LanguageEnglish, Vietnamese

Contact

Have a store that needs care? Let's talk.

Tell me about your store, what you want to change and your timeline. I'll come back with questions, a plan and a fixed quote.