All projects

QR Generator.

A QR code editor, API, and CLI with real customization and a shared generation engine. Open source.

Built
System architectureQR Generator
QR Generator architectureWeb, API, and CLI inputs flow through Node.js and Express, with content validation, QR encoding, Sharp image composition, and PNG export.Web editor / API / CLINode.js + ExpressContent validationQR encodingSharp renderingPNG export
Application architectureNode.js + Express

Overview

A Node.js application for generating QR codes from URLs, text, WiFi credentials, SMS, email, phone numbers, and vCards. A responsive editor provides preview and PNG downloads, backed by the same generation logic available through an API and CLI.

My role

Independent open-source utility. I built the generator, the editor, the API, and the CLI, with Jest and native Node tests.

The problem

Creating a usable QR code means encoding the right content, keeping presentation separate from the payload, and exporting an image people can actually share or print.

The solution

A shared QR generator encodes seven content types. Express serves the editor and API, the qrcode library handles encoding, and Sharp composes frames, captions, and optional logos into PNG output.

Engineering decisions

Separate encoding from presentation

Captions and frames are composed around the QR image. Caption text never alters encoded content, and the generator preserves the four-module quiet zone.

Validate before rendering

The enhanced endpoint bounds content, image size, logo dimensions, colours, and numeric options, and returns descriptive client errors for bad input.

Account for logo trade-offs

Adding a logo switches to high error correction and bounds its size. The README still tells users to scan-test the final image.

Key capabilities

Seven content types

URL, text, WiFi, SMS, email, telephone, and vCard encoding.

Preview and PNG export

Live preview and exports from 256 to 2048 pixels, before framing.

Presentation controls

Colours, frames, captions, fonts, and optional image logos.

API and CLI

HTTP endpoints and command-line options expose the generator beyond the editor.

The hard parts

  • Visual customization must preserve the QR's quiet zone and usable contrast.
  • Image decoding and composition need bounded input sizes and useful validation feedback.
  • A generated PNG still needs scan-testing in its final display or print context.

Outcomes and links

  • One generation engine supports browser, HTTP, and command-line use.
  • Public source with Jest and native Node tests.

Let’s build something
meaningful.

I’m looking for an Engineering Manager role where I can grow a team, own delivery, and keep a platform reliable while it changes.

Calgary, Alberta · Remote across Canada