Projet
Premier SaaS mis en ligne : générateur de QR codes dynamiques dont la cible se change à tout moment, sans réimprimer le code, avec personnalisation, analytics de scans et facturation
Un QR code imprimé est définitif : une fois sur un flyer, une affiche ou un packaging, la seule façon de changer la destination est de tout réimprimer. QR Dynamics règle ça avec une indirection : le QR encode une URL courte (/r/<slug>) qui redirige vers une cible modifiable à tout moment.
Le QR ne contient jamais l'URL finale, seulement le slug. La cible vit en base.
C'est mon premier SaaS mis en ligne, développé et exploité de bout en bout : produit, design, code, base de données, paiement, hébergement et exploitation.
/p/<slug>)QR imprimé ──> /r/<slug> ──> Route Handler ──> 302 ──> URL cible
│
└─ log du scan en asynchrone
Le log de scan passe par after() : il ne rallonge jamais la redirection. Le cloisonnement des données se fait à la fois en code et par les politiques RLS de Postgres.
| Couche | Technologie |
|---|---|
| Front + API | Next.js 16 (App Router), TypeScript |
| Base de données | Postgres via Drizzle ORM, migrations versionnées |
| Auth & stockage | Supabase |
| Paiement | Stripe (abonnements + webhooks) |
| Rendu QR | qr-code-styling |
| Styles | Tailwind CSS 4 |
Livrer un SaaS, ce n'est pas livrer une application. La partie visible a été la plus courte : ce qui prend le temps, c'est la facturation, les pages légales, la procédure quand un QR sert à du phishing, la purge des données, la reprise d'un webhook manqué. J'ai écrit le manuel d'exploitation en même temps que le code, et c'est ce document qui a le plus servi.
Expérience : Code Spot - micro-entreprise