Affitor
Exactly-once payout accounting on an at-least-once event pipeline, after third-party cookies died.
- Delivery guarantee
- At-least-once
- Accounting guarantee
- Exactly-once
Open to senior & staff roles
I'm Thang — a backend and platform engineer with 9+ years on the paths where a bug is a refund queue, a duplicate payout or an oversell. Exactly-once accounting on an at-least-once pipeline. A multi-tenant commerce app installed across three platforms from one core. A 300,000-product headless storefront cut over on a store that never stopped taking orders.
9+
Years shipping production software
Commerce platforms, APIs and infrastructure since 2016.
300K+
Products served headlessly
The Simon & Schuster catalogue, across US and UK storefronts.
30/min
Peak order throughput handled
Sustained without checkout degradation on a high-traffic store.
3
Commerce platforms shipped natively
Shopify, Magento and BigCommerce from one product core.
Every case study covers the constraint, the architecture, the parts that went wrong, and what changed for the business.
Exactly-once payout accounting on an at-least-once event pipeline, after third-party cookies died.
A multi-tenant shipping-protection SaaS with subscription billing, installed natively across three commerce platforms from one core.
A 300,000-product headless bookstore cut over live, across two regions, on one commerce backend.
Found the real bottleneck in the order-write path — not the catalogue cache everyone assumed.
I'm a backend and platform engineer who spent nine years on the systems where mistakes cost money — payment paths, event pipelines that pay partners, and inventory that has to agree with a warehouse in real time.
Most of my work sits on the seams between systems. An affiliate pipeline where delivery is at-least-once and the accounting has to be exactly-once. A shipping-protection product installed by merchants across three commerce platforms, from one multi-tenant core with per-platform adapters. A 300,000-product catalogue where the interesting problem was never the number — it was that cursor pagination, cache invalidation and a live cutover all had to hold at once, on a store that was taking orders the entire time.
The pattern I keep coming back to: the hard part is rarely the feature, it's the failure mode you inherit. Webhooks retry. Regions drift. The catalogue outgrows the query. I design for the second delivery before I ship the first.
I hand checkout back to Shopify rather than rebuilding it. A custom checkout costs more in PCI scope, payment methods and lost Shop Pay conversion than it will ever earn back.
On a store doing 20–30 orders a minute, the obvious fix was caching the catalogue. The actual bottleneck was the order-write path. Profiling first is not process — it is the difference between fixing it and not.
Webhooks retry, pipelines redeliver, users double-click. Idempotency is not a nice-to-have on money paths — it is the design.
Headless is a trade: rendering control for routing, caching and preview complexity. I go headless when the catalogue or the experience demands it, and stay on a theme when it does not.
The decision that survives is the one someone else can read six months later. I write the short version — what we chose, what we rejected, what would change our mind — because an architecture nobody can explain gets rebuilt by the next person who touches it.
Open to
Feb 2021 – Present
Remote · US & UK storefronts
Headless Shopify storefronts for a 300,000+ product publishing catalogue across two regions.
Feb 2021 – Present
Remote
Performance, reliability and integration work on a store peaking at 20–30 orders per minute.
Feb 2021 – Present
Remote
Shipping-protection app with subscription billing, shipped natively to Shopify, Magento and BigCommerce.
Feb 2021 – Present
Remote
Affiliate platform with cross-domain attribution and an idempotent event-processing pipeline.
Feb 2021 – Present
Remote
Live streaming platform on AWS MediaLive and CloudFront with Redis-backed live state.
Jan 2017 – Feb 2021
Vietnam
Commerce and web application work across the JavaScript and PHP ecosystems — the foundation the Shopify specialisation was built on.
Nine years of it, deepest on Shopify — headless storefronts, the Storefront and Admin APIs, and checkout boundaries you do not own.
Shopify keeps the commerce. You get full control of rendering, routing and caching.
A storefront whose performance ceiling is set by your architecture rather than by theme limits.
The customer-facing read path — products, collections, cart.
Fast catalogue and cart surfaces that stay fast as the catalogue grows.
Hand checkout back to Shopify. Deliberately.
Shopify's conversion-optimised checkout, with hand-off failures that are diagnosable rather than mysterious.
Highlighted items are where I have the most production depth — the rest I use comfortably.
The services behind the product — integrations, event processing, and the paths that move money.
Enough platform depth to own a deploy, a queue and a database — not just consume them.
How the decisions get made, written down, and survive the next person who touches them.
The specialisation most of those systems were built inside. Shopify deeply, plus the platforms merchants migrate from.
Interfaces that render fast on real devices and real networks, not just on a laptop.
The tests that exist because something expensive broke once — and the data that says whether it worked.
Took a 300,000-product catalogue headless across two regions without a big-bang cutover, on a store that was transacting the entire time.
Built the pixel and network-level evidence trail that separates your bugs from Shopify's behaviour — the single hardest part of running headless in production.
Continuous, idempotent warehouse reconciliation on a WooCommerce store selling faster than its sync was designed for.
Idempotent event processing for affiliate attribution, where a duplicated event is a real overpayment to a partner.
A platform-agnostic core with thin adapters, so Shopify, Magento and BigCommerce ship the same feature once.
Rebuilt affiliate attribution on first-party mechanisms when the industry default stopped working.
Short pieces on the commerce problems that don't have a Stack Overflow answer.
· 2 min read
When a headless checkout hand-off fails, the failing surface belongs to Shopify. Here's how to tell your bug apart from platform behaviour.
Read· 2 min read
Cursor pagination is fine at 500 products and painful at 300,000. What changes when your catalogue outgrows the happy path.
Read· 2 min read
Every webhook arrives twice eventually. On money paths, that's not an edge case to handle later — it's the shape of the system.
ReadI reply to every message that isn't a template. If you're hiring for a senior Shopify or full stack role — or you have a headless build that's gone sideways — tell me what you're working on.
Based in Vietnam (GMT+7) · Working remotely with US, UK and EU teams