
A storefront that costs the same next year as it does this year.
Varxity is a streetwear brand I moved onto Shopify behind a Framer front end. The decisions that mattered were recurring cost, duty at checkout, and one inventory permission nobody had ticked.
Role
Product lead and build
Timeline
2026
Team
The product owner and me, built solo
Live
varxity.co ↗

01
The problem
Varxity needed a real store: a designed front end, international shipping, and a checkout that doesn't surprise a buyer in another country with a customs bill on delivery. The brand is small, so anything carrying a yearly fee has to earn that fee every year.
It also arrived with a set of quiet errors. Product pages read as out of stock while inventory sat at ten. The shipping policy described a pricing model the store no longer used. The footer social links still pointed at the template author.
02
What I did
I took the one time fee over the subscription
There were two credible ways to connect Framer to Shopify. One costs roughly the same amount once. The other costs roughly the same amount every year. At this stage the difference isn't the price, it's that the second one keeps taking after the store stops being new.
I diagnosed the out of stock bug against the API, not the interface
Every product showed as unavailable. Calling the storefront API directly with the same token showed the items were purchasable, but the quantity field came back null with an access error, because one inventory permission had never been enabled on the headless channel. The front end read the quantity, saw null, and called it zero. It was a checkbox four levels deep that no amount of looking at the site would have found.
I told the founder his broken currency converter wasn't broken
A sixty nine dollar tee was showing at around nine thousand five hundred rupees, and he read it as a bug. It was import duty and tax included in the price, which is what landed pricing does. I laid out three options, recommended keeping duty inclusive, and named the trade honestly: a higher sticker price, against a customs bill arriving at the buyer’s door that only one of his carriers could even support.
I rewrote the copy that contradicted the store
The shipping page still promised flat rates and free delivery over a threshold that no longer existed in any setting. Publishing it would have been a promise the checkout couldn't keep. The policy text was rewritten against what the shipping profiles actually do.
The bug was not in the front end and it was not in the design. It was one inventory permission nobody had ticked.
03
How I ran it
This was a small job with an expensive failure mode, so the discipline sat in triage rather than in ceremony. Every claim made about the store got checked against the platform’s own API before it was treated as a bug.
Two of the three reported bugs turned out to be correct behaviour nobody had explained, and finding that out first saved the work of fixing things that weren't broken. The third was one inventory permission nobody had ticked.
The recurring cost decision was made the same way. I compared a one time fee against a yearly subscription over three years before choosing, and wrote down why, so whoever owns the store after me knows what the trade was.
04
The journey
A shopper lands on a black page with one word on it and has to choose to go further, which is the brand's whole argument. From the home page the route is shop, then a collection, then a product.
The product page is where the work is. The garment sits full bleed, the size finder answers the question that causes most returns, and the shipping cost is calculated by the carrier at checkout rather than guessed at with a flat rate.
Checkout is the one place the journey leaves Framer. The storefront is Framer and the transaction is Shopify, because checkout can never share a headless domain, and pretending otherwise costs either money or trust. Contact is the only other exit.
05
What shipped
It shipped as a live Framer storefront on the brand's own domain against a Shopify back end, with carrier calculated shipping across three zones, duty inclusive international pricing, product structured data for search, local currency in the cart by location, and a scroll lock bug traced to a single overflow rule left behind after in page navigation.
06
Impact
Storefront fee, against a yearly alternative
One time
Shipping zones, all carrier calculated
3
Flat rates and handling fees left in the store
0
Inventory permission behind the bug nobody could find
1
07
The work
The homepage, the story behind the brand, the shop and a collection, then a full product page with the size finder and the answers on returns and shipping, and contact.
08
Go deeper
Design system and Figma
The storefront is built directly in Framer against live product data, so the design and the catalogue are the same object. There's no separate design file to fall out of sync, which is deliberate for a store one person maintains.
Build and handover
Shopify holds the catalogue, the checkout and the inventory, a headless storefront token feeds Framer, and a merchant of record handles international duty and tax, with structured data and policy pages written against the live settings rather than the template defaults. Two written guides went over with it, so the team can run the store without me.
More
All work
→





