← Alle artikelen →

Hoe bouw je een schaalbaar dynamic QR-redirect systeem? De complete architectuur uitgelegd.

Een dynamic QR-systeem is meer dan een QR-code generator. In dit artikel leg ik de volledige architectuur uit van een schaalbaar redirect-systeem — van database-structuur tot redirect-engine en analytics.

Martin Knops · 17 Mar 2026

Een QR-code is simpel. Een dynamic QR-systeem is dat niet.

Het verschil zit hem in wat er achter de QR-code zit. Een statische QR-code verwijst direct naar een URL. Scan je hem, ga je daarheen. Altijd. Dat is handig voor eenvoudige toepassingen, maar het heeft een groot nadeel: wil je de bestemming wijzigen, dan moet je een nieuwe QR-code aanmaken en opnieuw afdrukken.

Een dynamic QR-systeem werkt anders. De QR-code verwijst niet naar de uiteindelijke bestemming, maar naar een redirect-engine. Die engine bepaalt, op het moment van scannen, waar de gebruiker naartoe gaat. De bestemming is op elk moment aanpasbaar — zonder de QR-code te herdrukken.

Dat klinkt eenvoudig. De implementatie is dat niet.

De database-architectuur

De kern van een dynamic QR-systeem is de database. Je hebt minimaal drie entiteiten nodig:

1. Tags — de QR-codes zelf, met een unieke code en een verwijzing naar de actieve redirect

2. Redirects — de bestemmingen, gekoppeld aan een tag

3. Scans — elke scan wordt geregistreerd met tijdstip, apparaat, locatie en tag

Een tag heeft altijd precies één actieve redirect. Maar hij kan meerdere redirects hebben in zijn geschiedenis — zo kun je altijd teruggaan naar een eerdere bestemming.

De redirect-engine

Dit is het hart van het systeem. Elke scan doorloopt de volgende stappen:

1. De QR-code wordt gescand — de gebruiker bezoekt een URL zoals qr.jouwdomein.nl/abc123

2. De engine zoekt de tag op basis van de code

3. De engine haalt de actieve redirect op

4. De scan wordt geregistreerd (asynchroon, zodat de redirect niet vertraagd wordt)

5. De gebruiker wordt doorgestuurd naar de bestemming

Stap 4 is cruciaal. Als je de scan synchronisch registreert — dus vóór de redirect — vertraag je de gebruikerservaring. Bij hoge volumes kan dit oplopen tot honderden milliseconden. De oplossing is een queue: de scan wordt in de wachtrij gezet en asynchroon verwerkt, terwijl de gebruiker al doorgestuurd is.

In Laravel ziet dat er zo uit:

dispatch(new TrackScan($tag, $request))->afterResponse();

return redirect($redirect->url);

De afterResponse() methode zorgt ervoor dat de job pas in de queue wordt gezet nadat de response al verstuurd is. De gebruiker merkt er niets van.

Analytics

Elke scan levert data op. Minimaal wil je bijhouden:

- Tijdstip van de scan

- Apparaat (mobiel, desktop, tablet)

- Browser

- Land en stad (via IP-geolocation)

- Referrer (waar komt de gebruiker vandaan)

Deze data aggregeer je per tag, per campagne en per tijdsperiode. Het dashboard toont grafieken, toptijden en geografische spreiding.

Schaalbaarheid

Een enkel redirect-verzoek is triviaal. Maar stel dat je systeem 100.000 scans per dag verwerkt — dan wordt schaalbaarheid een serieus onderwerp.

De bottlenecks zijn:

- Database queries voor de redirect lookup

- Het schrijven van scan-data naar de database

- De queue-worker die scans verwerkt

De oplossing voor de redirect lookup is caching. Een tag verandert zelden — de redirect URL kan prima gecached worden in Redis. Bij een cache-hit kost de lookup vrijwel niets.

Voor de scan-data is batching een optie: verzamel scans in Redis en schrijf ze elke minuut in bulk naar de database in plaats van één voor één.

Multi-tenant

Wil je het systeem aanbieden aan meerdere klanten — elk met hun eigen tags, dashboards en gebruikers — dan heb je een multi-tenant architectuur nodig.

De eenvoudigste aanpak is een tenant_id kolom op alle relevante tabellen. Elke query filtert automatisch op de actieve tenant. In Laravel kun je dit elegant oplossen met een global scope.

Conclusie

Een schaalbaar dynamic QR-systeem vereist doordachte keuzes in architectuur. De redirect-engine moet snel zijn, de analytics asynchroon, de database geoptimaliseerd en de multi-tenant structuur waterdicht.

Ik weet dit niet uit een tutorial. Ik bouwde dit systeem — het werd dynatag.com. Nu bouw ik dit soort systemen op maat voor bedrijven via DynaTag.eu.

Heb je een dynamic QR-systeem nodig? Neem contact op.

Vertel me over jouw dynamic QR-project. Ik geef je binnen 24 uur eerlijk advies — of maatwerk development gerechtvaardigd is of niet.

Stuur een bericht