About the shop
Greybeard Games sells retro games and collectibles, every piece bought, tested, cleaned, and photographed by the same pair of hands. The inventory is one of each: when a piece sells, it is gone. Like Countdown Clock, this is our own venture, so the case study covers the whole operation rather than a handoff.
The problem worth solving
Most resellers run their business across a spreadsheet, a marketplace dashboard, and a storefront that knows nothing about either. Stock drifts out of sync, the same item sells twice, and nobody can answer what a lot actually earned after fees.
Selling one-of-one inventory across two channels makes that failure mode expensive. A copy listed on eBay and on the shop is a copy that can be sold twice.
What we built
- One database behind both sides of the business. A Cloudflare D1 schema models the full chain from deal to lot to item to listing to sale to profit. The back-office app and the public storefront read the same tables, so anything that lands on either channel shows up on the very next request.
- A server-rendered storefront on Cloudflare Workers and Hono. Pages are built per request against live inventory, which keeps the shelf honest about what is still available and keeps hosting costs close to nothing.
- Two-channel sell-through that closes itself. A store purchase through Stripe hosted Checkout ends the matching eBay listing, and eBay orders sync back to flip the item to sold. The Stripe webhook is the system of record for store sales, signature-verified against the raw body.
- A single fee engine. Every marketplace fee, shipping cost, and lot allocation runs through one module rather than being recalculated per view, and it is covered by a test suite of golden numbers so margin math cannot quietly drift.
- The SEO surface a shop needs: canonical URLs with a permanent www to apex redirect, Product JSON-LD, a generated sitemap that skips out-of-stock pages, platform landing pages, and a Google Merchant Center product feed.
- A mailing list for restocks, since one-of-one inventory rewards the people who hear first.
Running it like a product
The interesting constraint here is that the storefront is the smaller half. Behind it sits a full reselling operation: eBay OAuth with automatic token refresh, roughly two years of order and finance history synced in, a review queue for fuzzy matches with one-to-one matching enforced transactionally, and a disposition flag for items pulled out of stock for business or personal use so they stop distorting sell-through without hiding their cost.
The result
A shop that stays accurate across two sales channels without anyone reconciling anything by hand, and a profit picture that holds up to the receipts. Browse the case at greybeard.games.



