Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qr_forge

简体中文

CI License: MIT Rust 1.85+ PRs welcome

Support Tinkora on Ko-fi

qr_forge creates QR codes, Code 128 barcodes, and EAN-13 barcodes locally in a browser. It uses Rust and WebAssembly to produce SVG and PNG files without sending the content being encoded to an application server.

Open the web app

Why qr_forge

QR payloads often contain Wi-Fi credentials, contact details, or internal URLs. qr_forge keeps generation in the browser and ships as a static application, so the application does not upload those values or require a third-party generation API.

Features

  • QR codes with L, M, Q, and H error correction
  • URL or text, Wi-Fi, vCard 3.0, phone, and email input modes
  • Code 128 for printable ASCII, with compact subset C for even-length numeric input
  • EAN-13 from exactly 12 digits, with the check digit calculated automatically
  • SVG and PNG output with configurable colors, module size, and quiet zone
  • Optional PNG logo overlay at 5% to 30% of the QR data area
  • English interface by default with an in-app Simplified Chinese switch
  • Static, browser-local processing with no application backend

See Product Scope for explicit non-goals and Product Contract for limits, outputs, and error codes.

Quick Start

Requirements:

  • Rust 1.85 or newer
  • The wasm32-unknown-unknown Rust target
  • wasm-pack 0.15 or newer
  • Python 3 or another local static HTTP server
git clone https://github.com/Tinkora/qr_forge.git
cd qr_forge
rustup target add wasm32-unknown-unknown

wasm-pack build --target web crates/qr_forge_web -- --locked
mkdir -p crates/qr_forge_web/static/pkg
cp crates/qr_forge_web/pkg/* crates/qr_forge_web/static/pkg/
python3 -m http.server 8080 --directory crates/qr_forge_web/static

Open http://localhost:8080. A local HTTP server is required because the app loads JavaScript modules and WebAssembly assets.

Development

cargo fmt --all -- --check
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo check -p qr_forge_core --target wasm32-unknown-unknown
cargo check -p qr_forge_web --target wasm32-unknown-unknown
wasm-pack build --target web crates/qr_forge_web -- --locked

cd crates/qr_forge_web
npm ci
npx playwright install chromium
npm run test:wasm-smoke:local

Browser tests require Node.js 24 or newer. The repository requires Rust 1.85 compatibility even if a newer compiler is installed locally. Before changing any HTML or user-facing frontend, follow the ui-ux-pro-max and browser verification rules in AGENTS.md.

Project Layout

Path Responsibility
crates/qr_forge_core QR and barcode generation, validation, rendering, and WASM functions
crates/qr_forge_web WebAssembly package entry point and static browser application
docs Product scope, public contract, maturity, and release process
.github Contribution templates and automated quality, security, and release workflows

Documentation

Privacy and Security

The application does not intentionally transmit QR or barcode input. The hosting provider can still receive ordinary request metadata when serving the static files. Review SECURITY.md for the security model and private reporting channel.

License

Licensed under the MIT License. Copyright (c) Tinkora contributors.

About

Privacy-first QR code and barcode generation for browsers and Rust

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages