Hey /c/privacy,
Similar to the idea that was proposed a month ago by @to_urcite_ty_kokos@lemmy.world, I built a little web app that allows one to "emulate" EAN13-based loyalty cards. I call it the Loyalty Card Emulator. 🪄
The app allows you to either select one of the built-in card numbers that I have found on the internet. (Only for demonstration purposes, of course!) Or you can just enter a code manually and create the loyalty card from it. The link to a card can be shared (e.g. if you and your SO use the same loyalty card).
At the moment, it is very basic and only has one single design that is supposed to visually mimic one of the biggest loyalty card providers that I know.
Architectural-wise, the app is written in TypeScript, powered by React and Vite. The app does not transmit and/or store your codes anywhere but on your device; it's a single-page application that runs entirely in your browser, without any server component.
The source code is publicly available here. The hosting is taken care of by Codeberg Pages - cheers for that!
Adding new card designs and/or preset codes can be achieved quite easily, so feel free to fork and contribute!
The reason is that laser scanners use a rotating mirror or lens in front of the laser to create the scanline, and only have a single light cell, detecting rapid changes in red light intensity. They can’t tell where light is coming from so you could trick them into reading a barcode transmitted as a sequence of light pulses from a single source (like an optical mouse’s LED controlled by an Arduino) but not an array of light sources (aka pixels) unless they have different reflectivity as the laser scans across them (such as E-ink). Technically, reflective LCDs could work with laser scanners but transferring the code to a TI-83 calculator is not worth the effort.