Muhammad Arslan
M'engager
Retour aux projets

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.

Rôle : Front-end and feature engineer (multi-developer team)Calendrier : 2025-2026Type : Full-stack web app

Next.js 16

React 19

TypeScript

Convex

Tailwind CSS 4

Radix UI

Resend

Aperçu interactif de la carte numérique Halatap avec exemple d'identité

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

FrameworkNext.js 16 (App Router) with React 19 and TypeScript
BackendConvex for the real-time database, queries, and mutations
Styles / Interface utilisateurTailwind CSS 4 with Radix UI primitives
Authentificationcustom email/password plus Google OAuth
CourrielResend, through the Convex integration
Passes pour Walletpasskit-generator with node-forge for certificate signing
Options complémentairesJotai for local state, Framer Motion for transitions, react-qr-code, Sonner for notifications

Fonctionnalités Clés

Générateur de cartes basé sur des modèlesplusieurs modèles où l'aperçu et la carte publique finale sont générés à partir des mêmes composants, garantissant que ce que vous concevez correspond exactement à ce que vous partagez.
Tableau de bord multi-cartescréez, modifiez, dupliquez, supprimez et partagez autant de cartes que vous le souhaitez depuis un endroit unique.
Partage public et privéles cartes publiques s'ouvrent à partir d'un lien ; les cartes privées sont restreintes aux adresses courriel de destinataires précis, avec application de la règle côté backend.
Partage par courrielenvoyez une invitation de carte via Resend avec le lien et le contexte associés.
Passes Apple Walletgénérez un fichier PKPass signé avec les couleurs spécifiques de la carte, un code-barres QR pour le lien public et des champs localisés.
export vCardtéléchargez des données de contact qui s'intègrent directement dans le carnet d'adresses d'un téléphone.
Importation CSV en blocimportez de nombreuses cartes en une seule opération, en associant les champs d'identité, les liens sociaux et les images de chaque ligne.
Prise en charge bilingueversions anglaise et arabe des champs clés, gérées tant au niveau de l'interface utilisateur que des passes générés.

Galerie

Éditeur de cartes Halatap avec exemple de profil et coordonnées
Éditeur de liens sociaux Halatap avec exemple d'URL de site web

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
Commencer votre brief de projet
Tous les projetsProjet suivantMLZ-Advanced
Halatap : Plateforme de cartes de visite numériques avec Apple Wallet et vCard | Muhammad Arslan