Skip to content
All work
2026Founder, sole engineerIn production

ManaArchive

A print-aware inventory, deck-building, and marketplace-sync platform for Magic: The Gathering collectors and sellers.

The problem

Collectors track five-figure inventories in spreadsheets that lose the detail that actually determines value — which printing, which finish, which language, and which binder the physical copy is sitting in. Sellers then re-enter all of it by hand on every marketplace they list on.

What I built

  • Modelled holdings as print-aware records normalized against Scryfall, so a card is never just a name — set, collector number, finish, and language survive import and export.
  • Built a CSV import pipeline that resolves rows against a local Scryfall mirror first and falls back to live lookups, parking anything ambiguous in a reviewable queue instead of silently guessing.
  • Wrote a single search grammar — t:creature c>=WU o:"draw a card" — used identically by the collection view and the global catalog, so one syntax works everywhere.
  • Added marketplace listing sync that pushes sale-state inventory to the user's own CardTrader and ManaPool seller accounts, polls orders back, and queues sold copies for review before mutating local holdings.
  • Sealed third-party seller tokens at rest with AES-256-GCM and shipped a documented key-rotation path that re-seals every stored connection without orphaning it.

Where it landed

  • Nightly Scryfall bulk sync keeps metadata and price snapshots current, with a boot-time catch-up and an off-box GitHub Actions run covering missed ticks.
  • Three-tier subscription model with Stripe checkout, billing portal, and webhook handling — plan enforcement runs whether or not billing is switched on.
  • Public marketing routes are prerendered for SEO; the app itself runs split across Cloudflare Workers, Render, and Supabase Postgres to keep fixed cost near zero.