QR Service — dynamic QR codes.
Print the code once and change its destination in the dashboard. We created our own service, from redirect logic and QR design to analytics, teams and subscriptions.

QR Service / homepage. Figures in the interface demo illustrate how data is displayed.
Keep printed materials relevant when their destination changes.
The need emerged in Acting Gym and TalentHub: business cards, displays and other materials were prepared before a permanent domain was chosen. We built an intermediary service. The QR holds a short address, while its destination can change without reprinting. We handled the architecture, interface, development, access protection and billing.
What we delivered
- Dynamic link and redirect architecture
- Landing page and dashboard interface design
- QR studio with brand styles and export
- Scan analytics, campaigns and teams
- Subscriptions, AED payments and REST API
- Access protection, tests and backups
A closer look at the website.
We built a visual system around a graphite foundation, a vivid accent, oversized typography and a modular grid. The landing page explains the service through interface examples, short scenarios and a plan comparison.

Features through clear scenarios.
Destination changes, QR design, analytics and API access share one section. Short explanations and animated details introduce the purpose of each tool.

Light and dark themes.
We kept the structure and visual hierarchy consistent between themes. The hero explains the core idea: the printed code stays the same while its destination changes.

Plans built into the product.
We designed Free, Pro and Max plans, monthly and annual billing, and a feature comparison. We integrated Ziina payments and server-side plan limits.

Where scans come from.
The demo section presents locations and traffic channels. The product supports code and campaign comparisons, date filters and data exports.
Project scope
- API routes
- 35
- Automated tests, including 11 payment scenarios
- 62
- Database tables
- 15
- Plans: Free, Pro and Max
- 3
Planning your own web service?
We will define the user journey and first release, from the interface to payments and integrations.
A need from real projects
Acting Gym and TalentHub needed QR codes before their permanent domains were chosen. A direct link encoded in print cannot be edited. We separated the QR from its destination: the code points to a short service URL, and the destination is managed in the dashboard. Development ran from 24 June to 17 July 2026.
Redirects without reprinting
We implemented short identifiers, uniqueness checks and custom slugs. Redirects use a 302 response with caching disabled so a changed destination applies on the next request. We added expiry rules, UTM tags, query forwarding and destination history. Disabled and unknown codes have a fallback page.
From prototype to web service
The first version used three Cloudflare Workers, KV caching, a D1 database and R2 backups. It explored client management, bulk QR creation, templates and access rules. We developed the production version on Next.js 15, React 19 and TypeScript with Neon Postgres, using PGlite for local development.
A dashboard for daily work
We brought together links, clients with brand kits, folders, campaigns and link-in-bio pages. Context stays with the user: a campaign or folder leads to its links and lets them create a new one in place. Bulk actions cover activation, pausing, archiving and labels. The QR studio customises dots, corners, colours and a centre logo, then exports the selected design as SVG or PNG.
Understanding placements
We separated scan recording from the redirect. Analytics cover countries, cities, channels, devices, browsers, operating systems and top codes. We added date filters, bot filtering, PNG chart exports and CSV and JSON downloads. Raw IPs are replaced with salted hashes. Figures in the landing page demos illustrate the interface.
Teams, API and subscriptions
We implemented organisations, invitations, roles, password recovery and API keys. The public REST API creates and retrieves links for external systems. Free, Pro and Max have monthly and annual AED billing through Ziina, server-side limits and signed payment notifications. Duplicate notifications do not activate a subscription twice; a refund removes the paid plan.
Protection and scenario testing
We added protected sessions, session revocation after password changes, one-time recovery tokens and sign-in rate limits. Destination validation, checks on state-changing requests and CSV export protection address common failure paths. The project underwent two security review rounds. We prepared 62 automated tests, including 11 for the payment lifecycle, plus daily backups and a database health check.
The public product and next step
We released the landing page, blog, API documentation and terms pages. The product interface is in English and payments are in AED. It currently runs at qr-redirect-vercel.vercel.app. A branded short domain has yet to be connected.
From a print problem to an independent SaaS.
Launched a web service with link management, a QR editor, scan analytics and team access. Built three plans with AED payments through Ziina, a public API, a blog and documentation. The service runs on Vercel; a dedicated short domain remains the next step.
Let’s build your digital product.
Discuss a service, dashboard or platform. We will define the architecture, design and launch stages.
Let’s talk