→ جميع المشاريع

NearDrop

مباشر

NearDrop تطبيق ويب تقدمي (PWA) لمشاركة الملفات عبر المتصفح بين الأجهزة مباشرة. تكتشف الأجهزة المتصلة بالشبكة نفسها بعضها تلقائياً، ويتولى خادم إشارات يعتمد Fastify وSocket.io ترتيب مصافحة WebRTC ثم ينسحب. يمر كل بايت عبر RTCDataChannel مباشر بتشفير DTLS-SRTP إلزامي. تُقسَّم عمليات النقل إلى أجزاء مع التحكم بالتدفق للملفات الكبيرة، مع تخزين مؤقت في IndexedDB والتحقق من SHA-256 عند الوصول. يدعم أيضاً الدردشة النصية المباشرة والملاحظات الصوتية ومشاركة الحافظة وإرسال المجلدات عبر JSZip. يعمل الإقران بين الشبكات برمز غرفة من 6 خانات أو رمز QR. ويمكن تثبيته كتطبيق PWA مع هدف مشاركة ليدفع نظام التشغيل الملفات مباشرة إلى التطبيق.

Next.jsTypeScriptWebRTCSocket.ioFastifyTailwind CSSshadcn/uiIndexedDBPWA
آخر تحديث
لقطة شاشة لمشروع NearDrop
المشكلة
AirDrop يعمل بين أجهزة Apple فقط. وكل بديل متعدد المنصات يتطلب حساباً أو تنزيلاً أو يمرّر ملفاتك عبر خادم طرف ثالث. لم تكن هناك طريقة سهلة تحترم الخصوصية لنقل الملفات بين أجهزة عشوائية.
الحل
بنيتُ تطبيق PWA يكون فيه المتصفح نفسه نقطة النقل. يرتّب خادم إشارات بسيط مصافحة WebRTC (SDP وICE) ثم ينسحب، وتتدفق كل البيانات بين الأجهزة عبر RTCDataChannel. تُقسَّم الملفات الكبيرة بحد تخزين مؤقت 16 ميغابايت وتُنقل إلى IndexedDB لتجنب مشكلات الذاكرة. وتتولى رموز الغرف ورموز QR وحماية كلمة المرور الاختيارية الإقران بين الشبكات.
التحديات
إبقاء عمليات النقل الكبيرة مستقرة تطلّب تحكماً دقيقاً بالتدفق: إيقاف حلقة الإرسال عندما يتجاوز مخزن RTCDataChannel المؤقت 16 ميغابايت واستئنافها عند الحدث bufferedamountlow. وكان قرار الاختيار بين إعادة التجميع في الذاكرة وIndexedDB حسب حجم الملف دون تعطيل الواجهة أصعب ما في مسار النقل.
النتيجة
تطبيق متكامل لنقل الملفات بين المنصات بلا أي عناء في التثبيت. يتعامل مع الملفات بأي حجم والمجلدات الكاملة والملاحظات الصوتية والحافظة والدردشة الفورية، وكل ذلك مباشر بين الأجهزة ومشفّر من الطرف إلى الطرف.