Zack Lovisa Software developer Start an estimate

Case study

2026

MTGSell

A storefront platform any trading-card shop can be dropped into, with the whole back office behind it: inventory, orders, point of sale, and automated price syncing.

  • Client Personal project
  • Discipline Web App
  • Duration Ongoing
  • Budget band Personal project
  • TypeScript
  • Next.js
  • Fastify
  • Postgres
  • Redis
  • OpenSearch
MTGSell shown on screen

The problem

A card shop selling online needs far more than a shop page. It needs inventory that matches what is on the shelf, orders that reconcile with the till, prices that track a market moving daily, and staff accounts that cannot quietly do anything they like.

Off-the-shelf storefronts handle the front half and leave the rest as a spreadsheet problem.

What I did

Built as a TypeScript monorepo. A Next.js shop with search, cart and checkout runs over a Fastify API, backed by Postgres, Redis and OpenSearch, so search stays fast as the catalogue grows.

Behind it sits the half nobody sees: catalogue and inventory management, orders, a point of sale, analytics, audit logging, roles and two-factor authentication, plus a scheduler that syncs pricing from TCGplayer so the shop is not repricing by hand.

Branding is per shop, so the platform can be dropped into a different store without a rebuild.

Outcome

A working platform with a public storefront and a full back office. The live link is a demo instance dressed as an example store, since the branding is per shop.

The interesting half is the unglamorous half. Audit logging, roles, and reconciliation are what decide whether a shop can actually run on the software, and they are exactly what gets cut from a cheap quote.

View it live