Muhammad Arslan
وظفني
العودة إلى المشاريع

Halatap

منصة لإنشاء ومشاركة وتصدير بطاقات العمل الحديثة من لوحة تحكم واحدة، إلى البريد الإلكتروني، ورمز QR، وvCard، و Apple Wallet.

الدور: Front-end and feature engineer (multi-developer team)الجدول الزمني: 2025-2026النوع: Full-stack web app

Next.js 16

React 19

TypeScript

Convex

Tailwind CSS 4

Radix UI

Resend

معاينة تفاعلية لبطاقة Halatap الرقمية مع هوية تجريبية

نظرة عامة

يستبدل Halatap بطاقة العمل الورقية بأخرى رقمية يمكنك بالفعل إبقاؤها محدثة. يحصل كل مستخدم على لوحة تحكم لبناء البطاقات من مجموعة من القوالب، ثم يشاركها حسب ما يتطلبه الموقف: رابط عام، أو رمز QR، أو بريد إلكتروني، أو ملف جهة اتصال قابل للتنزيل، أو بطاقة تُحفظ مباشرة في Apple Wallet. إنه تطبيق متكامل البنية (Full-stack) مبني على Next.js و Convex، مع حسابات آمنة، وبيانات في الوقت الفعلي، ودعم لكل من اللغتين الإنجليزية والعربية.

المشكلة

لقد عفا الزمن على البطاقات الورقية. تصبح المعلومات قديمة بمجرد تغير المسمى الوظيفي أو رقم الهاتف، كما يسهل فقدانها، ولا توجد إلا بتنسيق مادي واحد. المشاركة رقمياً ليست أفضل من الناحية العملية، لأنها تنتهي مشتتة عبر الروابط وملفات PDF ورموز QR وتطبيقات المراسلة دون مصدر واحد للحقيقة. وعلاوة على ذلك، يحتاج المستخدمون الدوليون إلى بطاقات بأكثر من لغة، وتحتاج الفرق إلى طريقة لإنشاء العديد من البطاقات في وقت واحد بدلاً من إنشاء واحدة تلو الأخرى. انطلق Halatap لدمج كل ذلك في نظام واحد.

دوري ومنهجية العمل

كان هذا مشروعاً جماعياً، وقد ساهمت في تطوير الواجهة الأمامية والعديد من الميزات الشاملة إلى جانب مطورين آخرين. امتد العمل ليشمل تجربة بناء البطاقة ولوحة التحكم، ومسارات المشاركة، وعمليات التكامل التي تجعل البطاقة مفيدة خارج التطبيق: بطاقات المحفظة، وتصدير vCard، والتسليم عبر البريد الإلكتروني. كان النهج المتبع طوال الوقت هو الحفاظ على هيكلية المنتج قابلة للتركيب (Modular). يغذي نظام قوالب واحد كلاً من معاينة المحرر والبطاقة العامة، ويخدم مخطط بطاقة واحد كلاً من إنشاء بطاقة فردية والاستيراد المجمع، لذلك أعادت الميزات استخدام نفس الأسس بدلاً من التشعب.

الحزمة التقنية

إطار العملNext.js 16 (App Router) with React 19 and TypeScript
الواجهة الخلفيةConvex for the real-time database, queries, and mutations
التصميم / واجهة المستخدمTailwind CSS 4 with Radix UI primitives
المصادقة وإدارة الهويةcustom email/password plus Google OAuth
البريد الإلكترونيResend, through the Convex integration
بطاقات المحفظةpasskit-generator with node-forge for certificate signing
إضافاتJotai for local state, Framer Motion for transitions, react-qr-code, Sonner for notifications

الميزات الرئيسية

منشئ بطاقات يعتمد على القوالبقوالب متعددة حيث يتم عرض المعاينة والبطاقة العامة النهائية من نفس المكونات، بحيث يكون ما تصممه هو بالضبط ما تشاركه.
لوحة تحكم لبطاقات متعددةإنشاء، وتعديل، ونسخ، وحذف، ومشاركة أي عدد من البطاقات من مكان واحد.
المشاركة العامة والخاصةتُفتح البطاقات العامة من رابط؛ وتقتصر البطاقات الخاصة على رسائل بريد إلكتروني محددة للمستلمين، ويتم تطبيق ذلك في الواجهة الخلفية.
المشاركة عبر البريد الإلكترونيإرسال دعوة بالبطاقة من خلال Resend مع إرفاق الرابط والسياق.
بطاقات Apple Walletإنشاء ملف PKPass موقع بألوان مخصصة للبطاقة، ورمز شريطي QR للرابط العام، وحقول مترجمة محلياً.
تصدير vCardتنزيل بيانات جهة الاتصال التي تُحفظ مباشرة في دفتر عناوين الهاتف.
الرفع المجمع لملفات CSVاستيراد العديد من البطاقات في وقت واحد، مع تعيين حقول الهوية، والروابط الاجتماعية، والصور لكل صف.
دعم ثنائي اللغةنسخ باللغتين الإنجليزية والعربية للحقول الرئيسية، يتم التعامل معها عبر كل من واجهة المستخدم والبطاقات المنشأة.

معرض الصور

محرر بطاقات Halatap مع ملف شخصي وتفاصيل تواصل تجريبية
محرر الروابط الاجتماعية في Halatap مع عنوان URL لموقع ويب كمثال

التحديات والحلول

كان لابد من أن يكون التحكم في الوصول مرناً دون أن يصبح معقداً. تحتاج البطاقات العامة والخاصة إلى قواعد مختلفة، لذلك تمت نمذجة المشاركة باستخدام جدول مشاركات مخصص مرتبط بالبطاقة والمستلم. لا يُسمح بالوصول العام إلا عندما يتم تحديد البطاقة صراحةً كعامة، ويكون التحقق داخل استعلام البطاقة نفسه بدلاً من تشتيته عبر واجهة المستخدم.

تم بناء المصادقة بدلاً من الاستعانة بمصادر خارجية بالكامل، مما يعني القيام بذلك بعناية. يتم تجزئة كلمات المرور باستخدام PBKDF2 المزود بـ salt من خلال Web Crypto API بدلاً من تخزينها بصيغة نصية، وتكون رموز إعادة التعيين مرتبطة بوقت وتُميز كمستخدمة بمجرد إنفاقها. كانت الميزة الأكثر تعقيداً هي إنشاء بطاقة Apple Wallet. فهي تتطلب توقيعاً مستنداً إلى الشهادات، والأصول المجمعة الصحيحة، وحمولة QR مضمنة، وحقولاً مترجمة ومنسقة، وكلها يتم إنتاجها عند الطلب وإرجاعها بنوع المحتوى الصحيح. كان دعم كل من المستخدمين الأفراد والفرق يتلخص في إعادة استخدام مخطط بطاقة واحد عبر مسار إنشاء طبيعي ومسار استيراد CSV منفصل.

النتيجة

ينتهي المطاف بـ Halatap إلى القيام بما يجب أن تقوم به بطاقة العمل الرقمية: هوية واحدة قابلة للتحرير تنتقل عبر الويب، والبريد الإلكتروني، ورمز QR، وملفات جهات الاتصال، و Apple Wallet، بلغتين، لكل من الأفراد والفرق. وتدفع ميزات بطاقة المحفظة والاستيراد المجمع على وجه الخصوص المنتج إلى ما هو أبعد من منتج "صفحة الملف الشخصي" النموذجي إلى شيء يناسب المشاركة متعددة القنوات في العالم الحقيقي.

هل تواجه تحدياً تقنياً مشابهاً في منتجك؟

شاركني الوضع الحالي للمنتج، والنتيجة المطلوبة، والمعوقات القائمة. وسأعتمد على ذلك في تحديد محطة تسليم أولى منطقية وعملية.

وظّف مطور Full-Stack
ابدأ ملخص مشروعك
جميع المشاريعالمشروع التاليMLZ-Advanced
Halatap: منصة بطاقات عمل رقمية تدعم Apple Wallet و vCard | Muhammad Arslan