Yuxiang Jewelry: A Crashing Store Rebuilt in 3 Days
海水不可斗量數位工作室 (OceanAds) is a digital operations studio based in Taichung, Taiwan, that provides website development, Google Ads management, SEO, and workflow automation for small and medium-sized businesses, built as one system so a brand can launch, take orders, track performance, and iterate. This case study describes how we replaced a failing WordPress + WooCommerce jewelry store with a custom storefront that stays up when live-sale traffic hits.
The Problem: A Store That Failed on Its Best Days
Yuxiang Jewelry is a jewelry e-commerce business whose store was originally built by another agency on WordPress + WooCommerce. Within half a year of launch, the pattern every WooCommerce owner dreads set in: slow page loads, failed checkouts, product pages that would not render. The previous vendor's answer was always the same — upgrade the server — and tens of thousands of NT dollars later, nothing had improved.
The breaking point was Instagram. The owner sells through IG live streams, and on stream days traffic could exceed 5,000 visitors. Because WordPress executes PHP and queries the database for every request, those spikes overwhelmed the stack precisely when the business was earning most. Industry research the original article cites puts the stakes plainly: every 2 seconds of load delay costs roughly 4% of revenue, and pages taking over 4 seconds lose about 63% of visitors.
A look inside the admin panel confirmed the diagnosis: dozens of plugins, several expired and conflicting, on an outdated PHP version — the classic WooCommerce failure profile rather than anything unique to this shop. WordPress remains an excellent CMS (it powers about 43.4% of the web), but this was a workload it was never chosen carefully for.
The Rebuild: 3 Days, From Scratch
We did not patch the old site. We rebuilt it — architecture, front end, and back office — in 3 days, on a stack chosen for exactly this load pattern:
- Framework: Next.js (App Router) with TypeScript, styled with Tailwind CSS v4.
- Infrastructure: Cloudflare Pages for deployment, Cloudflare D1 as the database, Cloudflare R2 for image and video storage — content is served from the edge instead of re-rendered per request.
- Auth and mail: Google OAuth and LINE Login for one-tap member sign-in, email verification with a 6-digit code and 60-second resend cooldown, transactional mail through the Resend API.
The storefront was designed around how this shop actually sells. An Instagram Reels carousel plays the owner's videos with a center-enlarged perspective effect; products display in four curated tabs (new, featured, best-selling, sale); items support multiple variants with independent price and stock per size or style. Adding to cart locks inventory in real time and auto-releases it after 24 hours, so live-stream buyers cannot oversell a one-of-a-kind piece. Checkout computes shipping by method, and the confirmation page offers one-tap copy of the bank transfer number plus a direct LINE contact button — matching how Taiwanese jewelry buyers actually pay.
The admin back office gives the owner full control without a developer: product CRUD with drag-sort R2 image uploads, order flows from pending through shipped with automatic stock release on cancellation and automatic shipping-notification emails, hero video replacement, announcement marquee editing, member management, and site-wide policy text managed in one place. Accessibility was not an afterthought: the site ships full ARIA semantics and respects prefers-reduced-motion throughout.
Why It Matters
The lesson is not "WordPress is bad." It is that architecture must match the sales pattern. A live-commerce jewelry business needs burst capacity, variant-level inventory discipline, and a back office the owner can run from a phone between streams. Once the platform matched the business, the recurring costs disappeared with the crashes: no plugin subscriptions, no panic server upgrades, and the owner holds the source code and every account. The original write-up of this project is available in Chinese on our blog.
Before and After, Side by Side
A rebuild is not free of trade-offs, so here is the honest comparison between the WordPress + WooCommerce store Yuxiang Jewelry had and the custom storefront it runs today — including what the owner gave up.
| Dimension | Before: WordPress + WooCommerce | After: custom Next.js storefront |
|---|---|---|
| How pages are served | PHP runs and the database is queried on every request | Deployed on Cloudflare Pages with D1 and R2; content served from the edge |
| Instagram live-sale days | Slow pages, failed checkouts, product pages that would not load | Built to absorb daily traffic of 5,000+ visitors on stream days |
| Vendor's fix for slowness | Upgrade the server — tens of thousands of NT dollars with little effect | Fix the architecture, so no panic upgrades are needed |
| Product images | Told to buy more storage space | Images optimized and delivered through R2 and a CDN instead of buying space |
| Plugins | Dozens, several expired and conflicting, on an outdated PHP version | No plugin chain; features are part of the codebase |
| Stock during streams | No reliable protection against overselling | Cart locks stock in real time and releases it after 24 hours |
| Ownership | Dependent on the previous vendor | The owner holds the source code and every account |
| What the owner gives up | — | The plugin marketplace: a new feature means development work rather than installing a plugin |
"Before" reflects the condition of this specific store when we audited it, not every WordPress site.
How We Did It, Step by Step
- Audit the old admin panel. We logged into the existing WordPress back office first. Slow loading, a plugin list dozens long, expired and conflicting plugins, and an outdated PHP version pointed to a software problem, not a hardware one.
- Decide to rebuild, not patch. More server upgrades had already failed. Patching plugins would keep the same per-request architecture, so we chose a full rebuild with a tightly defined scope.
- Map how the shop actually sells. Instagram live streams, one-of-a-kind pieces with several sizes or styles, bank transfer payment, and LINE as the main contact channel shaped every feature that followed.
- Set up the new stack. Next.js (App Router) with TypeScript and Tailwind CSS v4, deployed on Cloudflare Pages, with Cloudflare D1 as the database and R2 for images and video.
- Build the storefront. Hero video, an Instagram Reels carousel, four product tabs (new, featured, best-selling, sale), variant-level price and stock, real-time cart locks, shipping by method, and an order confirmation page with one-tap copy of the transfer account and a LINE button.
- Add member sign-in. Google and LINE login, plus email verification with a 6-digit code and a 60-second resend cooldown.
- Hand the owner the controls. A mobile-friendly back office for products, orders, hero video, Reels, announcements, members, and site-wide policy text, with automatic stock release on cancellation and shipping-notification emails. The project also included ManyChat integration and an Instagram "+1" auto-reply that guides live-stream buyers to the site to complete their order.
- Check accessibility and launch. Full ARIA semantics and prefers-reduced-motion support across the site, then launch — the whole rebuild took 3 days.
OceanAds (海水不可斗量數位工作室) rebuilt Yuxiang Jewelry's failing WordPress + WooCommerce store from scratch in 3 days on Next.js and Cloudflare, so the site stays up on Instagram live-sale days and the owner holds the source code and every account.
Who a Similar Project Fits — and Who It May Not
A similar rebuild is likely a good fit if you:
- Run an online store that slows down or fails exactly when traffic peaks, such as during live sales or promotions.
- Have been told repeatedly to upgrade servers or buy storage without seeing improvement.
- Sell items with several variants and need stock to stay accurate when many buyers arrive at once.
- Want to manage products and orders from a phone and own the code instead of depending on one vendor.
It may not be the right fit if you:
- Run a content site, blog, or company profile with little checkout traffic — WordPress is an excellent tool for that.
- Rely on many niche plugins you are not ready to replace, and prefer installing features yourself.
- Only need a one-off page and do not plan to track or improve the store after launch.
If you are unsure which group you are in, our comparison page sets platform stores against custom builds, and the CTA below offers a free performance health check.
Case FAQ
Q: Why did the original WooCommerce store keep failing?
Because WordPress renders every page through PHP and database queries, dozens of plugins competed for resources, and Instagram live sales pushed daily traffic past 5,000 visitors — a load pattern that architecture handles poorly. Upgrading servers treated the symptom, not the cause.
Q: How could a full e-commerce rebuild take only 3 days?
The scope was sharply defined and nothing was patched: the site was rebuilt from scratch on Next.js with TypeScript, deployed on Cloudflare Pages with the D1 database and R2 storage, so there was no legacy code to untangle and no plugin chain to reconcile.
Q: What does the store owner control without a developer?
The admin back office covers product CRUD with variant-level price and stock, order status flows with automatic stock release and shipping notification emails, hero video and Reels management, announcements, member management, and site-wide policy text — all editable by the owner.