Halatap
Une plateforme pour créer, partager et exporter des cartes de visite modernes depuis un tableau de bord unique, vers courriel, code QR, vCard et Apple Wallet.
Next.js 16
React 19
TypeScript
Convex
Tailwind CSS 4
Radix UI
Resend

Aperçu
Halatap remplace la carte de visite papier par une version numérique facile à maintenir à jour. Chaque utilisateur dispose d'un tableau de bord pour créer des cartes à partir d'une sélection de modèles, puis les partager selon les besoins : lien public, code QR, courriel, fichier de contact téléchargeable ou pass enregistré directement dans Apple Wallet. Il s'agit d'une application full-stack développée avec Next.js et Convex, dotée de comptes sécurisés, de données en temps réel et d'une prise en charge de l'anglais et de l'arabe.
Le Problème
Les cartes papier ont mal vieilli. Les informations deviennent obsolètes dès qu'un titre de poste ou un numéro de téléphone change, elles se perdent facilement et n'existent que sous un seul format matériel. Le partage numérique n'est guère plus efficace en pratique, car il se retrouve fragmenté entre liens, PDF, codes QR et applications de messagerie, sans source unique de vérité. De plus, les utilisateurs internationaux ont besoin de cartes en plusieurs langues, et les équipes doivent pouvoir générer de nombreuses cartes simultanément plutôt qu'une par une. Halatap a été conçu pour regrouper tout cela dans un système unique.
Mon Rôle et Mon Approche
Il s'agissait d'un projet d'équipe, et j'ai contribué sur le front-end ainsi que sur plusieurs fonctionnalités de bout en bout aux côtés d'autres développeurs. Les travaux ont couvert la création de cartes, l'expérience du tableau de bord, les flux de partage et les intégrations qui rendent une carte utile en dehors de l'application : passes Wallet, export vCard et envoi par courriel. L'approche a consisté tout au long du projet à préserver la modularité du produit. Un système de modèles unique alimente à la fois l'aperçu dans l'éditeur et la carte publique, et un schéma de carte unique sert à la fois pour la création unitaire et l'importation en bloc, permettant aux fonctionnalités de réutiliser les mêmes fondations plutôt que de diverger.
Stack Technique
Fonctionnalités Clés
Galerie


Défis et Solutions
Le contrôle d'accès devait être flexible sans devenir complexe. Les cartes publiques et privées nécessitent des règles différentes ; le partage est donc modélisé à l'aide d'une table dédiée aux partages, reliée à la carte et au destinataire. L'accès public n'est autorisé que lorsqu'une carte est explicitement marquée comme publique, et la vérification réside au sein même de la requête de carte plutôt que d'être dispersée dans l'interface utilisateur.
L'authentification a été développée en interne plutôt que totalement externalisée, ce qui a exigé une grande rigueur. Les mots de passe sont hachés avec PBKDF2 et un sel via la Web Crypto API au lieu d'être stockés en clair, et les jetons de réinitialisation sont limités dans le temps puis invalidés dès leur utilisation. La fonctionnalité la plus complexe a été la génération des passes Apple Wallet. Elle requiert une signature par certificat, les ressources groupées adéquates, une charge utile QR intégrée et des champs localisés formatés, le tout produit à la demande et renvoyé avec le bon type de contenu. La prise en charge conjointe des utilisateurs individuels et des équipes s'est appuyée sur la réutilisation d'un schéma de carte unique entre le parcours normal de création et le processus d'importation CSV.
Résultat
Halatap accomplit ce qu'une carte de visite numérique se doit de faire : une identité modifiable unique qui se diffuse sur le web, par courriel, par code QR, via fichiers de contact et Apple Wallet, en deux langues, tant pour les professionnels indépendants que pour les équipes. Les fonctionnalités de passes Wallet et d'importation en bloc lui permettent en particulier de dépasser le simple cadre de la « page de profil » pour s'adapter aux exigences réelles d'un partage multicanal.
Vous avez un problème de produit similaire ?
Partagez le produit actuel, le résultat dont vous avez besoin et les contraintes qui font déjà obstacle. J'utiliserai cela pour définir un premier jalon raisonnable.
Engager un développeur full stack