A 22-plugin marketplace bolted onto a live storefront — without breaking it.
SherpaGrinders runs an Old School RuneScape services business at sherpagrinders.com — live storefront, separate admin panel, deployed on Coolify with auto-deploys on push. In July 2026 I built them a dedicated plugin marketplace: 22 digital products with instant license-key delivery, a checkout that adapts per product type, and full admin control over catalog and licenses. Shipped onto a live production system with 222/222 engine tests passing and zero breaking schema changes.
Context
The existing SherpaGrinders storefront sells services — a human does the work, so checkout collects a game username and the order gets fulfilled manually. Plugins are a different kind of product entirely: the buyer needs a license key in hand the moment payment clears, with no human in the loop.
That meant the marketplace could not be a page slapped onto the existing flow. It needed its own catalog model, a checkout that knows digital products skip the game-username step, a license engine with real delivery guarantees, and admin tooling that mirrors the patterns the client already knew from running their services business.
And it all had to land on a live production system that takes real orders every day — new tables added cleanly through versioned, idempotent migrations, with the existing 222-test engine suite still passing after the merge.
What I Built
Full catalog across Bossing, Skilling, Minigames, PvP, and Utility, with tier labels on every product. All 22 plugins got bespoke, mechanic-specific descriptions written for this launch — no generic filler copy duplicated across listings.
The existing checkout was built for services. Digital products now skip the game-username field entirely, and the confirmation screen displays the license key immediately after payment — the buyer never waits on a human.
License keys issue automatically on verified payment, idempotent per order — a retried webhook or double-submit can never mint a second key. Keys are opaque, stored once at issuance, and masked to the last 4 characters everywhere else: admin views and audit logs included.
Plugin management (activate, deactivate, reprice) and license management (masked keys, revoke, regenerate) built to mirror the site's existing admin patterns, so the client's team runs the new marketplace the same way they run everything else.
Catalog categories
BossingEncounter-specific plugins with mechanic-level descriptions, not generic fillerSkillingTraining-loop plugins, each written up against the actual skilling method it supportsMinigamesPer-minigame tooling with copy that names the rewards and loops players care aboutPvPCombat-focused plugins with tier labels so buyers know exactly what class of tool they getUtilityQuality-of-life plugins rounding out the catalog to 22 productsEngineering Proof
222 of 222 engine tests passing after the merge. Zero breaking schema changes — the plugin and license tables were added cleanly through versioned, idempotent migrations, so a re-run deploy can never corrupt state.
Then the part most teams skip: I verified the whole flow in a real browser against the live deploy. Discover a plugin, open the detail page, go through checkout, pay, and watch the license key appear on the confirmation screen. Not "the tests pass" — the actual thing a customer does, done end to end.
Found Along the Way
During live visual verification of the deploy, I found the API container had never received its CORS allowlist config after an infrastructure migration — so every browser-side data fetch on the storefront was silently failing. Not just plugins: everything the browser fetched, site-wide. One-line infrastructure fix, redeploy, zero console errors across the site after.
A pre-existing catalog bug: the category strings in the data had drifted from the ones the filter compared against, so 5 of the 7 service categories simply never rendered under the "All" filter. Customers could not see most of the catalog. Fixed as part of the same engagement.
Tech Stack
If you run a working storefront and want to sell a new kind of product — digital goods, licenses, subscriptions — I build the catalog, checkout, and delivery layer onto your live system with the tests to prove nothing regressed.
22
Plugins cataloged
5 categories, bespoke copy each
222/222
Engine tests passing
Post-merge, zero regressions
Instant
License delivery
On verified payment
New launches and build logs, ~2 per month. No spam.