Michael Thomson
Firmware, factory, and storefront

NFC Manufacturing & Commerce Platform

An NFC stack, end to end. ESP32 devices that take jobs over MQTT and write web addresses to tags, a batch card-writing machine run from a web console, a printer console for the artwork, and the storefront that sells the finished cards.

Overview

Three repos that only make sense together. One job runs from checkout, through artwork and printing, to a tag write that gets verified before the card passes.

What it does
  • 01Cloud-controlled job delivery over MQTT
  • 02Dynamic NDEF URL writes, verified per tag
  • 03Captive-portal Wi-Fi onboarding
  • 04Batch writer with pass/fail card sorting
  • 05Dye-sublimation card printing over CUPS
  • 06Stripe-backed storefront for the finished cards

The idea

NFC cards and tags you can reprogram remotely. A tag holds a web address. Tap it with a phone and it opens whatever that address points to: a setup flow, an account activation, a product page. The destination lives in the cloud instead of being burned into the tag, so a card can change what it does after it ships.

The hardware

Device
  • ESP32 with an NFC module
  • Wi-Fi setup from a phone
  • Reconnects on its own
Writing
  • Writes a web address to each tag
  • Verifies every write
  • Works with any modern phone
Fleet
  • Jobs sent from the cloud
  • Devices report status back
  • Power tuned for long idle periods

The production line

Around the device sits everything else it takes to sell a card. A web console queues batch jobs and shows per-card progress as the run goes. A printer console drives a dye-sublimation printer for the artwork. A storefront takes the orders. The batch machine runs today against a simulated device. The physical mechanics are specced and waiting on the build.

Batch writing
  • Queue a run from the browser
  • Live per-card progress
  • Pass/fail sorting with retries
Printing
  • Dye-sublimation card printing
  • Artwork upload and adjustment
  • Every job logged
Selling
  • Design and order online
  • Card payments
  • Order confirmation email
Built with
ESP32PN532 NFCMQTTC++Wi-FiI²CNDEFSaaS BackendArduinoMosquittoNode.jsExpressMongoDBReactPythonFastAPICUPSImageMagickStripeServer-Sent Events