Skip to content
QR Generator

QR Generator

QR Generator (hereinafter the “Application”) is a web tool for generating Naomi-branded QR code images from a URL.

The live instance is available at https://qr.spellware.dev.

To generate a QR image:

  1. Open the page.
  2. Enter a URL in the form input.
  3. Select Generate.
  4. Download the generated PNG using the Download PNG button.

Generated images include:

  1. Naomi colour branding.
  2. Naomi avatar centred in the QR matrix.
  3. A branding strip with chat.naomi.lgbt.

If URL input is missing, generation fails with a validation error.

This project is a TypeScript Fastify service with both web UI and CLI generation paths.

Local setup:

  1. Install dependencies with pnpm install.
  2. Start the web server with pnpm start.
  3. Build TypeScript with pnpm build.
  4. Lint source files with pnpm lint.

Default server binding:

  1. Host: 0.0.0.0
  2. Port: 15555

HTTP endpoints:

  1. GET / returns the web UI.
  2. GET /generate?url=<value> returns a PNG attachment.
  3. Missing url query returns HTTP 400.
  4. Generation failures return HTTP 500.

CLI batch generation:

  1. Use pnpm generate -- <url> [<url> ...].
  2. Output files are written to the output directory.
  3. File names are URL-derived, lowercased, hyphenated, and limited to 60 characters.

Core generation pipeline:

  1. Generate QR data using qr-code-styling.
  2. Overlay Naomi avatar within a circular mask.
  3. Composite final image with bottom branding strip.

Project-specific legal references:

  1. License: https://docs.spellware.dev/#/license
  2. Terms: https://docs.spellware.dev/#/terms
  3. Privacy: https://docs.spellware.dev/#/privacy
  4. Security: https://docs.spellware.dev/#/security

Copyright is held by Naomi Carrigan.

Contributions are accepted via pull requests.

Before contributing:

  1. Review the repository contributing guidelines.
  2. Follow the Code of Conduct.
  3. Run lint and build locally before opening a pull request.

Feedback and bug reports are handled in the #bug-reports and #feature-requests forum channels in our Discord community.