ملف إرشادات وسياق دائم للمساعد الذكي (Antigravity / Gemini Agent):
يُقرأ هذا الملف تلقائياً في بداية كل محادثة لضمان فهم كامل ومستمر لطبيعة مشروع FileFly، بنيته التقنية، وبيئات استخدامه، وملاحظات التطوير الهامة.
- الاسم: FileFly
- الهدف الأساسي: تطبيق سريع، عصري، وآمن لنقل الملفات والنصوص عبر الشبكة المحلية (LAN / Wi-Fi) مباشرة بين مختلف الأجهزة وأنظمة التشغيل بدون الحاجة للإنترنت نهائياً (Zero Internet / Local Network Only).
- الخصوصية والسرعة: نقل محلي 100% بأقصى سرعة يوفرها راوتر الواي فاي، بدون تخزين سحابي وبدون قيود على أحجام الملفات.
- تجربة المستخدم: شبيهة بـ AirDrop ولكنها عابرة للأنظمة (Cross-Platform) مع رادار كشف للأجهزة المتصلة.
- تطبيق مكتبي مخصص (Electron):
- يعمل كبرنامج محمول (Portable
.exeأو مثبت) بدون إطار خارجي (Frameless Dark UI) مع شريط عنوان مخصص، تصغير لشريط المهام، وإشعارات نظام حقيقية. - الأمر لبنائه كـ exe:
npm run build:exe(ينتج في مجلدdist-app).
- يعمل كبرنامج محمول (Portable
- أو عبر المتصفح مباشرة:
- يمكن فتح الواجهة عبر المتصفح على http://localhost:5173 في وضع التطوير أو http://localhost:53316 في وضع الإنتاج.
- بدون تثبيت أي تطبيقات إضافية (Zero-Install):
- يفتح المستخدم كاميرا الهاتف ويمسح كود الـ QR Code المعروض على شاشة الكمبيوتر ليفتح الموقع مباشرة.
- تطبيق ويب تقدمي (PWA - Progressive Web App):
- يحتوي على
manifest.jsonوsw.js(Service Worker). - يمكن للمستخدم تثبيته كأيقونة تطبيق مستقلة على الشاشة الرئيسية للهاتف ("Add to Home Screen").
- يحتوي على
- React 18 مع Vite 6
- Tailwind CSS 3 (تصميم عصري Dark Mode زجاجي / Glassmorphism)
- Lucide React (أيقونات الأنظمة والأجهزة)
- State Management:
src/context/FileFlyContext.jsxيدير اتصالات الـ WebSocket وحالات النقل والأجهزة النشطة.
- Node.js (ES Modules)
- Express 4: لخدمة الواجهة وواجهات الـ REST API واستقبال الملفات.
- WebSockets (
ws): مزامنة فورية ثنائية الاتجاه للرادار، طلبات الإرسال، القبول/الرفض، تقدم النقل، والرسائل النصية. - Multer & Streams: رفع الملفات وتقسيمها لتقليل استهلاك الذاكرة وتوفير سرعة نقل عالية.
- UDP Discovery (
server/discovery.js): استكشاف تلقائي للأجهزة على الشبكة عبر البث (Port53317). - Dynamic IP Detection (
server/networkUtils.js): استخراج تلقائي لعنوان الـ IP الفعلي للراوتر وتحديث كود الـ QR عند تغير الشبكة. - mDNS Responder (
server/mdnsResponder.js): دعم النطاق المحليfly.local.
| المنفذ (Port) | الاستخدام | ملاحظات هامة |
|---|---|---|
53316 |
سيرفر الباك إند و WebSocket والـ API | المنفذ الرئيسي للإنتاج ولاتصال الهواتف وكود الـ QR |
5173 |
سيرفر تطوير الواجهة (Vite Dev Server) | مخصص للتطوير محلياً مع التحديث الحي (HMR) |
53317 |
منفذ UDP للاستكشاف (Peer Discovery) | مستخدم لبث واستقبال رسائل التعرف بين الأجهزة |
80 |
محجوز لنظام Windows (System / HTTP.sys) | :53316 أو :5173) |
- طريقة تشغيل المشروع في التطوير:
- السيرفر يشغّل بالاختصار:
npm run dev(يطلق concurrently كلاً منnpm run dev:serverوnpm run dev:vite).
- السيرفر يشغّل بالاختصار:
- ملفات الواجهة والإنتاج (
dist):- سيرفر الباك إند
server/index.jsمهيأ لخدمةdist/index.htmlفي الإنتاج، والتحويل التلقائي إلى منفذ5173في التطوير إذا لم يكن مجلدdistموجوداً. لا تعطل هذا السلوك.
- سيرفر الباك إند
- التجاوب مع الهواتف (Responsive UI):
- أي تعديل في التصميم يجب أن يراعي شاشات الهواتف المحمولة عمودياً وشاشات الحواسيب أفقياً بشكل ممتاز، مع مراعاة وضع الـ PWA.
- جدار الحماية والشبكة:
- عند تشغيل التطبيق على أي جهاز جديد، يجب تفعيل السماح في جدار حماية ويندوز (Windows Firewall) للشبكات الخاصة (Private Networks) لتتمكن الهواتف من الاتصال.
- سلامة بروتوكول النقل (File Transfer Protocol):
- لا تغير هيكل رسائل الـ WebSocket (
INIT_STATE,PEERS_UPDATE,TRANSFER_REQUEST,TRANSFER_ACCEPT,TRANSFER_PROGRESS,TRANSFER_COMPLETE,CLIPBOARD_SHARE) بدون مزامنة التغيير بينserver/index.jsوsrc/context/FileFlyContext.jsx.
- لا تغير هيكل رسائل الـ WebSocket (
- تنسيق التاريخ في سجل النقل (History Format):
- يُعرض التاريخ والوقت كاملاً بصيغة:
YYYY-M-D | 12:14 am(مثل2026-5-2 | 12:14 am) مع تثبيتdir="ltr"لمنع تداخل الأرقام مع الواجهة العربية.
- يُعرض التاريخ والوقت كاملاً بصيغة:
- خصوصية سجل النقل بين الأجهزة (Transfer History Privacy):
- سجل النقل خاص ومنفصل تماماً لكل جهاز؛ لا يمكن لأي مستخدم معرفة ما نقله مستخدم آخر (خصوصية تامة بين الأجهزة).
- يرى كل جهاز فقط العمليات التي شارك فيها هو بنفسه (إما كـ مُرسِل أو كـ مُستقبِل). لا تُشارك سجلات الأطراف الأخرى نهائياً سواء عبر الـ API أو في واجهة المستخدم أو التخزين المحلي.
- عرض وتصميم بطاقة السجل (Transfer History Card Layout):
- تصميم بطاقة تنفيذي راقي ثنائي الطبقات (Two-Tier Executive Glass Card) يمنح كل معلومة موضعها الطبيعي:
- الطبقة العلوية (File Profile & Metrics):
- اليمين: أيقونة Squircle متدرجة ومتوهجة بنوع الملف مع شارة الامتداد الدقيقة المدمجة في الركن الداخلي (مثل
JPEGأوPDF). - الوسط: اسم الملف بالخط العريض (
font-bold truncate) وتحته اتجاه النقل وتصنيف الملف مع شارة الإتمام الزمردية (↙ مستلم • صورة • مكتمل ✓). - اليسار: كبسولة حجم الملف الزجاجية المدمجة (
84.81 KB) مع زر الحذف الهادئ (Trash).
- اليمين: أيقونة Squircle متدرجة ومتوهجة بنوع الملف مع شارة الامتداد الدقيقة المدمجة في الركن الداخلي (مثل
- الطبقة السفلية (Route & Ledger Strip):
- شريط سفلي أغمق مدمج ومفصول بحد علوي خفيف (
bg-slate-950/60 border-t border-slate-800/60):- اليمين: مسار النقل بكبسولات الأجهزة الدقيقة
[📱 iPhone-0C6A] ➔ [💻 PC]. - اليسار: كبسولة التاريخ والوقت كاملاً
[🕒 YYYY-M-D | 12:14 am].
- اليمين: مسار النقل بكبسولات الأجهزة الدقيقة
- شريط سفلي أغمق مدمج ومفصول بحد علوي خفيف (
- رأس النافذة: زر "مسح الكل" لمسح السجل بضغطة واحدة.
- متجاوب 100% بدون أي تداخل أو التفاف على كافة شاشات الهواتف والكمبيوتر.
- الطبقة العلوية (File Profile & Metrics):
- تصميم بطاقة تنفيذي راقي ثنائي الطبقات (Two-Tier Executive Glass Card) يمنح كل معلومة موضعها الطبيعي: