E-commerce · Record Store2026

Sweet Fung Records

Rescuing, then rebuilding a vinyl shop — without touching a line of its theme

Sweet Fung Records is a Tbilisi record shop that sells vinyl online — 325 records, each cleaned, graded and photographed. I look after the whole site: I found out why it took thirteen seconds to load and fixed it, then rebuilt the storefront to the new design — shipped as a layer over the live store, with an undo switch.

Role

Designer · Developer

Timeline

2026 · ongoing

Platform

Web · WooCommerce

Year

2026

Sweet Fung Records hero — Discover Rare Finds headline on a white plate notched into a black-and-white turntable photo, monstera leaves bleeding out of the frame
01The shop

A record shop built by collectors, selling trust by the gram.

Sweet Fung sells second-hand and new vinyl from Tbilisi — 325 records spanning 1979 to 2024, every one chosen by ear. Online, that pitch lives or dies on detail: honest condition grades, a way to listen before buying, and a site that feels as curated as the crates.

01

Graded like collectors grade

Media and sleeve are graded separately on the Goldmine standard — M down to P — and 304 of the 325 records carry a grade. The grade is a filter, not a footnote.

02

Listen first

242 records carry listening links, embedded as a player on the product page. Nobody buys a 12-inch from a thumbnail.

03

One pair of hands

Design, code, servers, the shop’s data model. When the site broke, the same person who drew it went and read the server logs.

02The rescue

First, the site took thirteen seconds to load. I went looking for why.

Pages were taking 10–13 seconds to answer. It wasn’t malware — the files checked clean. It wasn’t the pages — each one rendered in under a second. It was an audience problem: the hosting plan had exactly two PHP workers, and both were permanently busy serving one very dedicated robot.

93%

of all traffic was one crawler

Apple’s search robot had wandered into the shop filters — where every combination of genre, price and condition is its own URL — and was crawling that infinite maze six seconds at a time: 5,691 of 7,642 logged requests. Real customers queued behind it.

The insight

The fix wasn’t optimisation. It was a bouncer: robots rules plus a guard that turns bots away from filter URLs before the store starts rendering. Response times fell from 13 seconds to under one.

03The rebuild

Then the shop got a new face — shipped as a layer, not a rewrite.

The redesign was drawn in Figma; the store it had to land on was live, on a stock theme, taking orders. So the new design shipped as a design-system layer over the running shop — design tokens plus one plugin per surface: home, shop, product, checkout. Nothing in the theme was edited. Turn the layer off, and yesterday’s site comes back intact.

01

Genres you can put a needle on.

The genre rail renders each crate as a vinyl disc — grooves drawn in CSS, the newest record in that genre as the label art, refreshed automatically from the catalog. Below it, a cascade selector splits the collection the way the shop thinks: vinyl or gear, new or used, dance or everything else.

SolvesBrowsing like flipping through crates

Sweet Fung Records homepage — two-row header, a rail of eleven vinyl-disc genre icons, and a cascade category selector
HomeGenres as spinning records — each disc wears the newest release in that crate.
Sweet Fung Records hero — Discover Rare Finds headline on a white plate notched into a black-and-white turntable photo, monstera leaves bleeding out of the frame
The heroA white plate carved into the photograph with concave notches — the corners are the design.
02

Filters that ask a digger’s questions.

Condition, price range, artist, year, format — with the condition filter powered by the real Goldmine grades on the records. The stock sidebar widgets are silenced by the plugin layer; the data model underneath is untouched.

SolvesFinding one record among 325

Sweet Fung Records shop page — filter panel with condition, price range and artist checkboxes beside a grid of 325 vinyl listings
The cratesCondition, price, artist, year — the questions a digger actually asks.
New Arrivals band — vinyl labels photographed on grey plates over a black full-bleed section
New arrivalsFresh finds get the black band.
03

A record page that plays.

Price as a pill, the artist split from the title, a Track List panel that wraps the shop’s listening links in one skin, and the two condition grades stated right above the buy buttons. The artist names themselves were split out of 321 combined product titles into a real taxonomy — 287 artists, each with their own page.

SolvesBuying sound unheard

Sweet Fung Records product page — a 12-inch single with an embedded listening player, media and sleeve condition grades, and wishlist, cart and buy buttons
A record pageListen before you buy; media and sleeve graded separately, stated up front.
04

An about page cut like a record.

The shop’s story typeset as an LP: a manifesto in giant type, principles as a Side A tracklist with runtimes, the crates as Side B, and live stats counted from the catalog — 325 records, 288 artists, 34 genres. No stock photos; the only disc on the page is drawn in CSS.

SolvesSounding like collectors, not a catalog feed

About page hero — WE DIG. YOU LISTEN. headline beside a CSS-drawn spinning vinyl disc, over a scrolling genre marquee
About the shopThe disc is drawn in pure CSS — grooves and all.
About page — live stats reading 325 records, 288 artists, 34 genres, 1979–2024 pressings, above the manifesto Streaming is for searching, vinyl is for finding, and a Side A tracklist of shop principles
The manifestoThe stats are live counts from the catalog, and the principles are typeset as a tracklist — Side A, with runtimes.
04The craft pass

The client looked at my faithful rebuild and said it wasn’t sexy.

“Not at all same sexy level” — his exact words, comparing my structurally complete rebuild to the Figma. He was right. I had matched the layout and missed the design: my type sizes, spacing and disc sizes were eyeballed approximations of the comp.

So I stopped eyeballing. I exported the Figma frame at its true 1920-pixel width, screenshotted the live site at exactly 1920, and stacked them. The diffs were all measurable: section titles 28px where the comp said 32, section rhythm 64px where it said 88, genre discs 62px where it said 96, and a hero whose corner notches I’d rounded off into an ordinary box. Each number was corrected off the comp, and the hero got its real carved corners back.

Structure-complete is not design-complete. Measure the comp — the sexy lives in the pixels you eyeballed.

05Results

What it did.

0.7s

Server response

From 10–13s before the bot guard

325

Records in the crates

304 carry a Goldmine grade

287

Artists, own taxonomy

Split out of 321 combined titles

0

Theme files edited

The redesign is a reversible layer

A shop that grades its records VG+ or better can’t ship its website as G. Now both sides of the sleeve match.

Next case study

Generato

An app where you type a sentence and get a picture. Half of new users quit after one go.