// scripts/generate-qr.ts import QRCode from 'qrcode' import { mkdirSync } from 'fs' import path from 'path' const BASE_URL = process.env.NEXT_PUBLIC_APP_URL ?? 'http://localhost:3000' // Matches seeded zone qr_code_token values in 20260709000008_seed.sql const ZONES = [ { token: 'scw1-dock-a-qr-2026', name: 'SCW1 — Dock A' }, { token: 'scw1-cold-storage-qr-2026', name: 'SCW1 — Cold Storage' }, { token: 'scw1-loading-bay-qr-2026', name: 'SCW1 — Loading Bay' }, ] async function main() { const outDir = path.join(process.cwd(), 'public', 'qr') mkdirSync(outDir, { recursive: true }) for (const zone of ZONES) { const url = `${BASE_URL}/report?zone=${zone.token}` const outputPath = path.join(outDir, `${zone.token}.png`) await QRCode.toFile(outputPath, url, { width: 400, margin: 2, color: { dark: '#000000', light: '#FFFFFF' }, }) console.log(`✓ ${zone.name}`) console.log(` → ${url}`) console.log(` → ${outputPath}`) } } main().catch((err) => { console.error(err) process.exit(1) })