├── .env.example ├── .gitignore ├── README.md ├── index.js ├── package-lock.json ├── package.json └── wrangler.toml /.env.example: -------------------------------------------------------------------------------- 1 | BUCKET_NAME="mybucketname" 2 | CLOUDFLARE_ACCOUNT_ID="" 3 | CLOUDFLARE_AUTH_EMAIL="" 4 | CLOUDFLARE_AUTH_KEY="" 5 | CLOUDFLARE_ZONE_ID="" 6 | WORKER_ROUTE="serverless-workers.signalnerve.com/*" 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Hugo default output directory 2 | /public 3 | 4 | # Serverless config 5 | node_modules 6 | .serverless 7 | 8 | ## OS Files 9 | # Windows 10 | Thumbs.db 11 | ehthumbs.db 12 | Desktop.ini 13 | $RECYCLE.BIN/ 14 | 15 | # OSX 16 | .DS_Store 17 | 18 | # env config 19 | .env 20 | 21 | dist 22 | worker 23 | 24 | .wrangler 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | QR Code Generator, built with Workers 2 | 3 | There is a [tutorial available](https://developers.cloudflare.com/workers/tutorials/build-a-serverless-function/) if you would like more details on how this works. 4 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import QRCode from 'qrcode-svg' 2 | 3 | const generate = async request => { 4 | const { text } = await request.json() 5 | const qr = new QRCode({ content: text || 'https://workers.dev' }) 6 | return new Response(qr.svg(), { headers: { 'Content-Type': 'image/svg+xml' } }) 7 | } 8 | 9 | const landing = ` 10 |

QR Code Generator

11 |

Click the below button to generate a new QR code. This will make a request to your serverless function.

12 | 13 | 14 |

Check the "Network" tab in your browser's developer tools to see the generated QR code.

15 | 16 | 33 | ` 34 | 35 | export default { 36 | fetch: async (request, env) => { 37 | let response 38 | if (request.method === 'POST') { 39 | response = await generate(request) 40 | } else { 41 | response = new Response(landing, { headers: { 'Content-Type': 'text/html' } }) 42 | } 43 | return response 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workers-qr-code-generator", 3 | "version": "0.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "workers-qr-code-generator", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "qrcode-svg": "^1.1.0" 12 | } 13 | }, 14 | "node_modules/qrcode-svg": { 15 | "version": "1.1.0", 16 | "resolved": "https://registry.npmjs.org/qrcode-svg/-/qrcode-svg-1.1.0.tgz", 17 | "integrity": "sha512-XyQCIXux1zEIA3NPb0AeR8UMYvXZzWEhgdBgBjH9gO7M48H9uoHzviNz8pXw3UzrAcxRRRn9gxHewAVK7bn9qw==", 18 | "license": "MIT", 19 | "bin": { 20 | "qrcode-svg": "bin/qrcode-svg.js" 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workers-qr-code-generator", 3 | "main": "index.js", 4 | "private": true, 5 | "description": "Example project for generating QR codes with Workers", 6 | "version": "0.1.0", 7 | "author": "Kristian Freeman ", 8 | "scripts": { 9 | "start": "wrangler dev", 10 | "deploy": "wrangler publish" 11 | }, 12 | "dependencies": { 13 | "qrcode-svg": "^1.1.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "qr-code-generator" 2 | compatibility_date = "2024-09-30" 3 | main = "index.js" 4 | --------------------------------------------------------------------------------