Building FORQ: Smart QR Codes for Apps
Published:
Author:Ryan Carter
Reading Time:4 Minutes

So here's a problem that's been annoying marketers and app developers for years. You want to put a QR code on your product packaging, or maybe on a billboard, or in a print ad. Cool, easy enough right? Except... your app is on both iOS and Android. And QR codes can only point to one URL.
You're stuck with three bad options: create two separate QR codes (which looks messy and confuses people), pick one platform and ignore the other half of your audience, or send everyone to a landing page where they have to click again to get to the right app store. All of these options kinda suck.
That's why we built FORQ.
What it does
FORQ gives you one QR code that automatically figures out what device someone's using and sends them to the right place. iPhone user? Boom, App Store. Android user? Play Store. Someone scanning from their laptop? We've got a fallback URL for that too (though if you're actually holding your laptop up to scan a QR code with the webcam, we respect the dedication but maybe just type the URL).
The whole redirect happens in under 50 milliseconds. That's fast enough that users don't even notice it happening. They just scan and land exactly where they need to be.
The stack
We built this on Nuxt because we've been using it for years and it's rock solid. The syntax is clean and intuitive, plus it gave us almost everything we needed right out of the box - SSR, routing, and API routes all built in.
For the database we're using Turso, which is basically SQLite in the cloud, with Drizzle ORM to keep everything type safe. The whole thing is deployed on Vercel because their edge network keeps redirects fast no matter where in the world someone scans.
Key libraries we're using:
- qrcode for generating the actual QR codes (obviously)
- Chart.js for the analytics dashboard
- bcrypt for password hashing
- jsonwebtoken for auth
Everything's written in TypeScript because we like catching bugs before they hit production.
The features people care about
Smart routing: This is the core thing. You give us three URLs (iOS, Android, and a fallback), and we handle the rest. Our device detection parses the User Agent header and routes accordingly. If we can't detect the device for some reason, we have a fallback chain that tries to get them somewhere useful.
Analytics that don't suck: Every scan gets logged with geo data attached. You can see exactly where in the world your users are scanning from, what percentage of your audience is on iOS vs Android, and track engagement by country and region. If you're using UTM parameters for campaign tracking, we capture all of that too. The dashboard breaks it all down with interactive charts showing your geographic distribution, device breakdown, and scan trends over time.
QR code management: You can create unlimited codes, download them in whatever format and size you need (PNG, SVG, JPEG from 256px up to 2048px), and preview before creating. Pretty standard stuff but it works well.
International support: We support 8 languages with full i18n setup. The SEO is multilingual too, hreflang tags and all. Figured if we're building this thing we might as well make it accessible globally.
How the redirect works
The redirect logic is pretty straightforward but it had to be bulletproof. We parse the User Agent string to detect iOS, Android, or desktop. Then there's a priority system: if you're on iOS, you get the iOS URL. If that's not set for some reason, we try Android, then fallback. Same logic for Android users. Desktop gets the fallback URL.
All the UTM parameters and query strings get forwarded automatically. So if someone scans a code from your Instagram campaign, those utm_source and utm_campaign tags follow them all the way to the App Store or Play Store. Campaign managers love this.
We're logging everything to the database but doing it in a non-blocking way so it doesn't slow down the redirect. Speed was a huge priority. Nobody wants to scan a QR code and sit there waiting.
Why we built it
At Studio Future, we love building apps that fix everyday friction points. The kind of problems where you think "why doesn't this just work?"
FORQ is exactly that kind of project. There are a million QR code generators out there, but most are just static codes pointing to one URL. The ones that do dynamic routing are usually expensive or slow or both. We saw a gap between what exists and what people need.
So we built something free, fast, and focused on solving one specific problem really well. If you're marketing a mobile app and need one code that works for everyone, or you're tired of the two-QR-code workaround, this is for you.
Analytics, campaign tracking, geo data and multi-language support were all in from day one. No "enterprise plan required" nonsense.
If you've got a problem like this in your own business, a tool for your internal team or a product for your customers, we build these for clients too. Let's talk about what you're trying to solve.
What's next
Right now FORQ does exactly what it's supposed to do and it does it well. We're talking to early users about what should go into future versions.
Every project teaches you something new once real users get their hands on it.
FORQ is a side project. The day job is ecommerce development, and the instinct is the same there: when a problem turns up twice, build the tool rather than solving it twice.
If you're dealing with the multi-platform QR code problem, give FORQ a try. It's free and it's fast.
