
À propos du projet
Un système d'abonnements et de contrôle d'accès où chaque membre porte un QR code et où l'écran d'entrée valide les passages en temps réel, même sans connexion.
Mon rôle: Conception produit et développement full stack, y compris l'intégration du scanner matériel et le chemin d'accès hors ligne.
J'ai construit cette plateforme parce que le contrôle d'accès impose d'ordinaire un choix désagréable. Soit on achète un tourniquet fermé qui vient avec son logiciel et ses règles, soit on gère les abonnements dans un tableur et on vérifie l'adhésion de mémoire à l'accueil. Le premier est cher et rigide, le second cesse de fonctionner dès que le lieu dépasse la centaine de membres.
Le produit gère les membres et les abonnements, émet un QR code par membre et pilote un écran de contrôle d'accès qui valide chaque passage au regard du statut d'abonnement. Le scanner est un boîtier ZKTeco fonctionnant en keyboard wedge : il tape le contenu du QR suivi d'une touche entrée. Je lis cela au niveau du document plutôt que via un champ de saisie à garder en focus, si bien que l'opérateur ne peut jamais casser l'écran en cliquant ailleurs, et qu'aucun pilote ni SDK constructeur ne s'intercale entre le matériel et l'application.
L'écran d'accès est la partie qui ne doit jamais tomber, il est donc conçu pour continuer à valider connexion coupée puis se réconcilier ensuite. La stack est React 19 avec TypeScript sur Vite, Tailwind v4 et Firebase pour l'authentification et les données, empaquetée avec Electron pour le poste d'accueil. Je l'ai construite face à une salle de sport, qui est la version la plus dure du problème : forte affluence à heures fixes et file qui se forme dès qu'un scan hésite. Les trois mêmes pièces, un justificatif, un état d'abonnement et une décision de porte, sont exactement ce dont un espace de coworking, une piscine ou une clinique ont besoin, et c'est pourquoi rien dans le modèle ne porte le nom d'une salle de sport.
Fonctionnalités principales
- 🎫 QR code par membre : Chaque adhésion génère son propre code, si bien que l'entrée ne demande ni carte, ni badge, ni jeton propriétaire.
- 🚪 Écran d'accès en temps réel : Chaque scan est validé au regard du statut d'abonnement et la réponse s'affiche immédiatement.
- 📴 Fonctionne connexion coupée : L'entrée continue de valider les membres hors ligne et se réconcilie au retour du lien.
- ⌨️ Intégration scanner sans pilote : Le boîtier ZKTeco se comporte en clavier, lu au niveau document, si bien qu'aucun SDK constructeur ne s'intercale entre matériel et application.
- 🖱️ Insensible au focus par conception : La capture du scan étant globale, un opérateur qui clique ailleurs ne peut jamais casser silencieusement l'entrée.
- 💳 Gestion des adhésions et des formules : Membres, formules d'abonnement et produits se gèrent depuis un back office unique plutôt qu'un tableur.
- 🏛️ Pas lié à un seul type de lieu : Un justificatif, un état d'abonnement et une décision de porte sont les trois mêmes pièces pour une salle, un coworking, une piscine ou une clinique.
- 🖥️ Version bureau prête pour l'accueil : Electron empaquette l'application pour le poste de réception, si bien que l'entrée n'est pas un onglet que l'on peut fermer.
- 🚦 État actuel : Le logiciel est construit et pilote un vrai scanner, et aucun site ne l'exploite encore en production. Le relais de porte est la phase suivante, si bien que la version actuelle n'annonce que ce qu'elle fait.
Problèmes et solutions
Problème: Un lieu qui s'équipe en contrôle d'accès choisit entre un tourniquet fermé qui impose son logiciel et ses tarifs, ou un tableur complété par la mémoire du personnel à l'accueil. Le premier est rigide et cher, le second s'effondre passé une centaine de membres et laisse entrer des abonnements expirés.
Solution: Cette plateforme garde le logiciel ouvert et le matériel bon marché. Un scanner QR standard se comportant en clavier supprime tout verrouillage constructeur, l'écran d'entrée valide chaque scan au regard du statut d'abonnement réel, et il continue de décider hors ligne pour qu'une coupure réseau ne se transforme jamais en file d'attente à la porte.
Problème: Les logiciels de contrôle d'accès sont d'ordinaire écrits pour un seul type de lieu, si bien qu'un produit pour salle de sport ne peut pas servir un espace de coworking sans réécriture, alors que les deux font exactement la même chose : vérifier si cette personne est à jour, maintenant, devant une porte.
Solution: Le modèle porte un justificatif, un état d'abonnement et une décision de porte, et rien au dessus ne porte le nom d'une salle de sport. Changer de type de lieu relève des formules et des règles d'ouverture, pas du code, ce qui rend la même version vendable à une piscine ou à une clinique.


