35 lines
1.9 KiB
Markdown
35 lines
1.9 KiB
Markdown
# Barcode Tools
|
|
|
|
Generate and decode QR codes and barcodes locally in the browser.
|
|
|
|
Barcode Tools is a standalone local-first application in the [add·ideas Toolbox](https://git.add-ideas.de/lotobo/toolbox-portal). Inputs are processed in the browser and are not uploaded.
|
|
|
|
## Current scope
|
|
|
|
- Local SVG generation for QR, Data Matrix, PDF417, Aztec and selected linear symbologies
|
|
- Local barcode decoding from a bounded image file or an explicitly enabled, permission-gated camera; native `BarcodeDetector` is preferred when available and local ZXing is the fallback
|
|
- Escaped URL, email, SMS, Wi-Fi, vCard and geo QR payload builders
|
|
- Bounded CSV batch generation into a deterministic SVG ZIP
|
|
- Bounded parsing and validation for common GS1 Application Identifiers in parenthesized HRI and raw element strings, including FNC1/ASCII GS boundaries, dates, check digits and decimal indicators
|
|
- GTIN check-digit validation, physical SVG sizing, raster-dimension planning, nominal quiet-zone guidance and print-sized SVG export
|
|
|
|
Generated SVG is checked for active or linked content before preview/download. Decoded payloads are displayed as text and never opened automatically. GS1 allocation/ownership is not queried. bwip-js padding is in points rather than barcode modules, so quiet-zone conformance must be measured on final output; scanner interoperability and print grade still require testing against the intended scanner and applicable specifications. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) and [docs/PRIVACY-SECURITY.md](docs/PRIVACY-SECURITY.md).
|
|
|
|
## Development
|
|
|
|
Requires Node.js 22 and npm 11.
|
|
|
|
```sh
|
|
npm ci
|
|
npm run check
|
|
npm run test:browser
|
|
```
|
|
|
|
## Release
|
|
|
|
`npm run release:artifact` creates a deterministic `release/barcode-tools-0.2.0.zip` and checksum sidecar.
|
|
|
|
## Licence
|
|
|
|
GPL-3.0-or-later. Runtime dependencies retain their own licences; see [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|