A dynamic QR code is a short link: the picture points at your own redirect, and you change where the redirect goes. Add scan logging, a styled code with a logo and SVG export, and an agent builds the whole manager in one sitting. The caution isn't code, it's longevity: every printed code depends on your server and domain staying up for years, which a $7 plan quietly handles. If your codes will sit on menus or packaging, budget for a small VPS and a domain you will keep renewing.
Before you buildQR TIGER Free keeps static codes forever, and a static code is all a poster with one fixed link needs. Only codes whose destination you want to change need a paid plan or a redirect of your own.
Build me a self-hosted dynamic QR code manager to replace QR TIGER. Requirements: - Node.js 22 + TypeScript: a Fastify server with server-rendered admin pages (Eta) and a little vanilla JS. `npm start` serves the admin on http://127.0.0.1:4850 and, on a second listener (PUBLIC_PORT in .env), only GET /r/<code> for the public. - Storage: better-sqlite3 in ./data/qr.db: codes (short code, name, destination URL, status, expiry date) and scans (time, browser family, device type, referrer host, country). Never store raw IPs. - Redirect: /r/<code> answers 302 to the destination and records the scan after responding, so a logging failure never delays or breaks the redirect. Paused or expired codes show a plain page. Country comes from the CF-IPCountry header if present, else from a GeoLite2 file at GEOIP_DB (`maxmind`), else stays empty. - QR images: `qrcode` with error correction H and a 4-module quiet zone. A dynamic code encodes BASE_URL/r/<code> (BASE_URL in .env), so editing the destination never changes the picture. Colours, an optional centre logo (`sharp`, at most 20% of the width) and SVG and 1024 px PNG downloads. Static codes (URL, text, Wi-Fi, vCard) encode their content directly and skip the redirect. - Admin: one password in .env (signed cookie). A list with search, a create/edit form with live preview, and a stats page per code: scans per day for 30 days as an inline SVG chart, top countries, devices and referrers, and a CSV export of the raw scans. - Bulk: upload a CSV of name,destination (up to 3,000 rows) and download a ZIP (`archiver`) with one SVG per row and a CSV mapping names to short codes. - Single user. No accounts, no telemetry, local-first; the server makes no outbound calls. - Out of scope: hosting files or landing pages, multi-URL routing, team seats, API keys, link-in-bio. - README: putting the public port behind Caddy with HTTPS, and a warning that every printed code depends on this server and domain staying up, so back up ./data and keep the domain renewed.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own QR TIGER.
Add routing rules to the QR manager in this folder. Requirements: - Per code, an ordered list of rules: device type (iOS, Android, desktop), country, language from Accept-Language, or a time window; the first match wins, and the plain destination is the fallback. - A rule editor on the code's edit page with a "test as" box where I paste a user agent and country and see which rule fires. - The scan row stores which rule matched. - Unit tests cover rule order, a missing country and a time window across midnight. - Update the README.
Add scan alerts to the QR manager in this folder. Requirements: - Per code, optional alerts: first scan ever, and more than N scans in an hour. - Deliver by SMTP email (nodemailer, settings in .env) or by an ntfy topic URL from .env. - At most one alert per code per hour; log every alert sent on the stats page. - Never block the redirect: alerts are queued and sent from a background loop. - Update the README.
Add simple landing pages to the QR manager in this folder. Requirements: - A code can have type "page": a Markdown body, an optional image upload (max 2 MB, stored in ./data/uploads/) and up to five link buttons. - Serve it at /r/<code> on the public listener as static HTML with no scripts, and still record the scan. - Sanitise the Markdown and escape the button labels. - A preview pane in the admin editor. - Update the README.
Add a weekly report to the QR manager in this folder. Requirements: - Every Monday at 08:00 local time, email the owner a table of every active code with scans last week, the change on the week before, and top country. - Highlight codes with zero scans for four weeks in a row. - Settings from .env: SMTP_URL, REPORT_TO and REPORT_TZ. - A "send now" button on the admin home page. - Update the README.
Printed codes sit on menus, packaging and posters for years, so people pay someone else to keep the redirect running and the scans counted. A non-technical colleague can also change a link in a dashboard without touching a server.
Estimate · A small VPS or a free-tier container for the redirect; a domain adds about a dollar a month. A tunnel from your own machine costs nothing but is wrong for printed codes, because the code dies when the machine sleeps. The build session is token usage on your agent plan.
Checked 2026-10-19 against QR TIGER's docs: 1, 2, 3, 4, 5, 6
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Unlimited static codes, 3 dynamic codes with 500 scans each, basic scan analytics, unlimited file storage, QR TIGER logo popup. |
| Regular | $7 | $5.42 | 12 dynamic codes, unlimited scans and downloads, advanced scan analytics, ad-free, 5 MB file uploads, 500 API requests a month, editable link and design, templates, one user. |
| Advanced | — | $16 | 200 dynamic codes, priority 24/7 support, 10 MB uploads, 3,000 API requests a month, bulk codes up to 3,000 per batch, Google Analytics, Zapier and HubSpot connections, password-protected codes. |
| Premium | — | $37 | 600 dynamic codes, 10,000 API requests a month, one white-label domain, smart multi-URL routing by scan count, time, location or language, precise geolocation and geofencing. |
| Professional | — | $89 | 1,200 dynamic codes, files up to 60 MB and one extra user, with everything in Premium. |
| Enterprise | custom | — | An admin plus sub-users for several teams or brands. |
Free gives unlimited static QR codes and 3 dynamic codes capped at 500 scans each, with a QR TIGER logo popup when scanned.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $7 a month on the Regular plan, $84 a year (checked 2026-10-19).
QR types that host content for you: files, menus, vCard pages and landing pages; Connectors for Google Analytics, Zapier and HubSpot, and the hosted API; Smart routing by time, location and language, and geofencing; Someone else keeping the redirect alive and supported around the clock; Team seats and white-label domains with support behind them. If any of those matter to you, keep paying.
Yes: Shlink (open source), YOURLS (open source), Kutt (open source).