Case Study · E-commerce Platform
KTXZ Shop
A multi-game trading-card marketplace that pairs a customer storefront — browse, search, cart, Stripe checkout, returns, reviews — with a full admin operations platform for catalog, pricing, inventory, and fulfillment. Eight card games, one system, built solo end-to-end.
Overview
Two products in one repo: a storefront customers love, and the operations platform that runs it.
Card data and market pricing span Pokémon, Magic: The Gathering, Disney Lorcana, One Piece, Gundam, and Riftbound — priced through the Scrydex, Scryfall, Pokémon-TCG, PriceCharting, and TCGplayer providers — plus UniVersus and Weiss Schwarz via dedicated import tooling.
The interesting engineering isn't the CRUD. It's the money-safe, race-safe, failure-tolerant machinery underneath: atomic inventory holds, idempotent webhooks, a queued email pipeline with a dead-letter path, and a pricing sync that respects a hard API budget.
Storefront
Everything a buyer touches.
Multi-game catalog with brand/set, rarity, per-game element, and condition filters — powered by MongoDB Atlas Search with autocomplete, prefix matching, and typo tolerance.
Guest and authenticated carts, with the guest cart auto-merging into the account on login so nothing is lost between sessions.
Automatic tax, address collection, and live or flat-rate shipping — with orders created only by a verified, idempotent webhook.
Stock is held for the duration of checkout and swept by cron, so two buyers can’t race for the last copy of a single.
Scheduled drops with countdown timers and a global drop widget — plus preorder windows carried through checkout with expected-ship dates.
Product reviews with spam filtering and moderation, self-service return requests, and guest return lookup by order number + email.
A customer collection tracker: catalog owned cards into custom binders, keep a wishlist, watch portfolio value over time and set completion, import/export by CSV, and mint public read-only share links. Entries key to a canonical printing, so they re-value from the current market and survive a listing selling out.
Admin operations
Everything the store runs on.
CSV bulk import, JSON set-manifests, and set-based import from Scryfall & Scrydex — every row reconciled (created / skipped / failed) so nothing is silently dropped.
Look up market prices across providers, override per card, and run an hourly sync that stays inside the Scrydex monthly API budget via a built-in guard.
Status updates, tracking, Shippo label purchase, printable packing slips, and full or partial refunds — with an audit log over sensitive actions.
Bulk uploads with browser-side background removal and OpenCV auto-crop, stored on S3 + CloudFront.
Customer / vendor / admin roles with re-authentication required before the most sensitive actions.
Sales and operational analytics (Recharts), operational-cost tracking, and vendor records.
The hard parts
Where an e-commerce build actually gets dangerous.
By the numbers
Under the hood