Skip to content
Nachi3D Labs

ProjetsNachi3D Certify

Nachi3D Certify

En ligne

Vérification d'authenticité par NFC pour figurines en résine peintes à la main.

Démo en ligneCode source disponible sur demande

À propos du projet

Présentation

Nachi3D Certify associe chaque figurine que je vends à une puce NFC NTAG215 intégrée dans sa base. Un client tape son téléphone sur la puce et arrive sur une page de vérification montrant le numéro de la pièce, ses photos, la taille de l'édition, les dates de sculpture et de peinture, et la chaîne de propriété. La page est publiquement accessible — pas d'app à installer — et prouve que la figurine vient bien de mon atelier, et pas d'un revendeur ou d'un contrefacteur.

Construit sur Next.js 15 avec App Router, TypeScript en mode strict et Tailwind v4, hébergé sur Vercel avec Supabase comme backend Postgres + Auth + Storage. Des tokens HMAC-SHA256 empêchent la falsification d'URL : chaque URL de vérification contient une signature de 24 caractères calculée côté serveur, donc modifier l'UID de la puce ne serait-ce que d'un caractère mène le visiteur sur une page tampon. Trilingue EN/FR/AR avec RTL complet.

La vraie raison : je fabriquais des figurines originales et je voyais des copies non autorisées bon marché apparaître en ligne avant même que j'aie fini une série. Je voulais une manière de dire « celle-ci est authentique » qui survive aux photos, aux copies et aux reventes de mauvaise foi.

Fonctionnalités clés

Ce qu'il fait

Vérification par tap via puces NTAG215 intégrées — aucune app à installer
Certificat PDF A6 généré à la demande avec QR code
Flux de revendication par magic-link (Supabase + Brevo SMTP)
Transfert de propriété peer-to-peer avec révocation possible avant acceptation
Galerie publique avec recherche par personnage et filtres de licence
Timeline de provenance append-only (création, revendication, transfert)

Construit avec

La Stack

Next.js 15
React 19
TypeScript
Supabase
Tailwind v4
next-intl
pdf-lib
Playwright

Ce que je ferais différemment

Avec le recul

Je séparerais les projets Supabase de test et de production dès le premier jour — partager un seul projet a causé un bug proche d'une perte de données où le seed e2e a élagué de vraies pièces. Je construirais aussi le header d'auth public en Phase 1 au lieu de le greffer après le login admin-only.

Vous voulez quelque chose comme ça pour vous ?

Décrivez-moi ce que vous aimeriez construire et voyons si c'est un bon fit.