Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emg110/algorand-qrcode
Algorand QR Code generator is a JavaScript module that outputs an standard QR code (exportable to SVG file and text) from a JSON object. It works in terminal, NodeJS and modern browsers. Complies to Algorand ABNF Grammar.
https://github.com/emg110/algorand-qrcode
algorand algorand-qrcode algorand-uri browser cli generator javascript nodejs payment qr qr-codes qr-generator qrcode wallet web
Last synced: 14 days ago
JSON representation
Algorand QR Code generator is a JavaScript module that outputs an standard QR code (exportable to SVG file and text) from a JSON object. It works in terminal, NodeJS and modern browsers. Complies to Algorand ABNF Grammar.
- Host: GitHub
- URL: https://github.com/emg110/algorand-qrcode
- Owner: emg110
- License: mit
- Created: 2021-04-30T13:18:57.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-17T12:23:53.000Z (over 1 year ago)
- Last Synced: 2023-11-20T16:20:53.904Z (12 months ago)
- Topics: algorand, algorand-qrcode, algorand-uri, browser, cli, generator, javascript, nodejs, payment, qr, qr-codes, qr-generator, qrcode, wallet, web
- Language: JavaScript
- Homepage: https://developer.algorand.org/solutions/algorand-qr-code-generator-javascript/
- Size: 2.45 MB
- Stars: 19
- Watchers: 2
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-algorand - QRCode Generator
- awesome-algorand - QRCode Generator
README
[](https://developer.algorand.org/solutions/algorand-qr-code-generator-javascript/)
# Algorand QR Code Generator V3.2.0
[![NPM](https://img.shields.io/npm/v/algorand-qrcode.svg)](https://www.npmjs.com/package/algorand-qrcode) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
[![npm](https://img.shields.io/static/v1?label=license&message=MIT&color=green&style=flat-square)](https://github.com/emg110/algorand-qrcode/blob/master/license)New version 3 is a complete re-write of the Algorand QRCode generation tool. Simpler and more effective!
Breaking changes: The way to import and some of options have changed , please consult this readme.
algorand://AMESZ5UX7ZJL5M6GYEHXM63OMFCPOJ23UXCQ6CVTI2HVX6WUELYIY262WI?label=emg110@gmail.com
## Demo
### [Live Demo](https://emg110.github.io/algorandqrcode/)
## Links
### [Algorand Developers Portal Publication](https://developer.algorand.org/solutions/algorand-qr-code-generator-javascript/)
### [Algorand Dev Hours Presentation](https://cutt.ly/SnkO7Xl)
### [Algorand Dev Hours Presentation Video on YouTube](https://www.youtube.com/watch?v=RzP3y42Lf4o)
## News
> ## Version 3.2.0 is now here!
> ### Now completely supports any modern web framework
> ### Modern JS Module in both Node and Browser
## Technical notes
- Amount is in MicroAlgos
- Algorand URI reference specification: [Algorand payment prompts specification](https://developer.algorand.org/docs/reference/payment_prompts/).
- Requires NodeJS version later than 10.
## Table of contents
- [Highlights](#highlights)
- [Algorand URI's ABNF Grammar](#algorand-uri-abnf-grammar)
- [Installation](#installation)
- [Usage](#usage)
- [Error correction level](#error-correction-level)
- [Mentioned Trademarks](#mentioned-trademarks)
- [Credits](#credits)
- [License](#license)## Highlights
- Supports NodeJS and Browser.
- Supports RFC 3986 and Algorand URI ABNF Grammar.
- CLI utility.
- Save QR code as valid SVG image or text## Algorand URI ABNF Grammar
```javascript
algorandurn = "algorand://" algorandaddress [ "?" algorandparams ]
algorandaddress = *base32
algorandparams = algorandparam [ "&" algorandparams ]
algorandparam = [ amountparam / labelparam / noteparam / assetparam ]
amountparam = "amount=" *digit
labelparam = "label=" *qchar
assetparam = "asset=" *digit
note = "note=" *qchar
```## Installation and use
```shell
npm install --save algorand-qrcode
```
and then```shell
import algoqrcode from "algorand-qrcode/lib/bundle.min.js"
```or, install it globally to use `qrcode` cli command to generate Algorand URI qrcode images in your terminal.
```shell
npm install -g algorand-qrcode
```
and then```shell
algoqrcode [options]
```## Usage
### Browser and Frameworks (react...) use
```javascript
import algoqrcode from "algorand-qrcode/lib/bundle.min.js";
const MyQrCodeComponent = (props)=>{
let qrcode = algoqrcode({wallet:props.wallet, label:props.label})
let scg = qrcode.svg()
return svg
}
```### CLI
```
Usage: algoqrcode [options]Algorand options:
-m, --amount Amount (in Micro Algos) of Algorand transaction [number]
-w, --wallet Destination Wallet address (Algorand account address) [string]
-l, --label Label of Algorand transaction [string]
-a, --asset Algorand asset id (in case of Algorand ASA transfer) [string]
-n, --note note [string]QR Code options:
-e, --ecl Error correction level [choices: "L", "M", "Q", "H"]Renderer options:
-o, --output Output type [choices: "file", "svg", "terminal"]
-w, --wallet Destination wallet [number]
-p, --padding Padding around QRcode [number]
-b, --background Light color [string]
-c, --color Dark color [string]
-s, --size QRcode image width and height (px) [number]
-f, --file Output file [string]Options:
-h, --help Show help [boolean]
--version Show version number [boolean]Examples:
- Send 1 Algo transaction:
algoqrcode -w "AMESZ5UX7ZJL5M6GYEHXM63OMFCPOJ23UXCQ6CVTI2HVX6WUELYIY262WI" -m 1000000 -s 128 -n "This is an Algo payment transaction QR Code"- Save Algorand contact label as svg image:
algoqrcode -w "AMESZ5UX7ZJL5M6GYEHXM63OMFCPOJ23UXCQ6CVTI2HVX6WUELYIY262WI" -l "[email protected]" -o file -f sample.svg```
### NodeJS
Import the module `algorand-qrcode` for your NodeJS module```javascript
import algoqrcode from 'algorand-qrcode'
let qrcode = algoqrcode({
wallet: "AMESZ5UX7ZJL5M6GYEHXM63OMFCPOJ23UXCQ6CVTI2HVX6WUELYIY262WI",
label: "Test Label",
output: "svg",
size:256
})
let svg = qrcode.svg()
console.log(svg)
```## Error correction level
Error correction capability allows to successfully scan a QR Code even if the symbol is dirty or damaged.
Four levels are available to choose according to the operating environment.Higher levels offer a better error resistance but reduce the symbol's capacity.
If the chances that the QR Code symbol may be corrupted are low (for example if it is showed through a monitor)
is possible to safely use a low error level such as `Low` or `Medium`.Possible levels are shown below:
| Level | Error resistance |
|------------------|:----------------:|
| **L** (Low) | **~7%** |
| **M** (Medium) | **~15%** |
| **Q** (Quartile) | **~25%** |
| **H** (High) | **~30%** |The percentage indicates the maximum amount of damaged surface after which the symbol becomes unreadable.
Error level can be set through `options.ecl` property.
If not specified, the default value is `M`.#### QR Code options
##### `errorCorrectionLevel`
Type: `String`
Default: `M`Error correction level.
Possible values are `low, medium, quartile, high` or `L, M, Q, H`.#### Algorand URI params
##### `wallet`
Type: `String`Wallet address for Algorand transaction.
##### `amount`
Type: `Number`Amount of Algorand transaction in MicroAlgos or Standard Asset Unit.
##### `label`
Type: `String`Label of Algorand transaction.
##### `asset`
Type: `String`Asset Id of Algorand transaction if used. If not specified , Algo will be used as fungible token.
##### `note`
Type: `String`note field content of Algorand transaction.
#### Renderers options
##### `ecl`
Type: `String`
Default: `M`Define the error correction level.
##### `padding`
Type: `Number`
Default: `5`Define how much wide the quiet zone should be.
##### `size`
Type: `Number`
Default: `128`Width and height.
##### `color`
Type: `String`
Default: `#000000ff`Color of dark module. Value must be in hex format (RGBA).
Note: dark color should always be darker than `color.light`.##### `background`
Type: `String`
Default: `#ffffffff`Color of light module. Value must be in hex format (RGBA).
## License
[MIT](https://github.com/emg110/algorand-qrcode/blob/master/license)## Credits
> Special appreciations to [Sheghzo](https://github.com/sheghzo/).
> The idea for this lib was inspired by: Algorand developers portal Article [Payment Prompts with Algorand Mobile Wallet](https://developer.algorand.org/articles/payment-prompts-with-algorand-mobile-wallet/ ) ,from Jason Paulos.## Mentioned Trademarks
"QR Code" curtsey of :
[](https://www.denso-wave.com)"Algorand" curtsey of:
[](https://algorand.com)