تفاصيل المشروع

لدي نظام مكتبي (Desktop Application) مبني بالتقنيات التالية:

Electron 28

React 18 + Vite

SQLite كقاعدة بيانات محلية

النظام يعمل بشكل عام، لكنه يحتاج إلى تحسين معمّق للكود، رفع مستوى الجودة، زيادة الاستقرار، وتحسين الأداء ليعمل بكفاءة تامة مع حجم بيانات تقريبي قدره 100 ألف صف تشمل الإدخال، التعديل، البحث، والفلترة والتصدير.

المطلوب من المطوّر (المهام بالتفصيل)

1) تنظيف المشروع وتهيئة بيئة العمل

مراجعة المشروع كاملًا (Frontend + Backend داخل Electron).

إزالة الاعتماد نهائيًا على مكتبة better-sqlite3 من:

package.json

كامل الملفات (imports / requires / أكواد معلّقة)

التأكد أن المشروع يعمل فقط باستخدام الاعتماد الحالي على SQLite (sqlite/sqlite3).

2) تحسين طبقة قاعدة البيانات (SQLite)

التأكد من وجود اتصال واحد فقط (Single DB Connection) يعاد استخدامه عبر كامل التطبيق.

ضبط ملف قاعدة البيانات ليكون:

واضح، بسيط، واستخدامه آمن مع async/await

يحتوي على try/catch واضح في تهيئة الاتصال وتشغيل الجداول

إنشاء فهارس (Indexes) للحقول المستخدمة في البحث لضمان سرعة عالية مع 100 صف.

3) تحسين منطق العمليات داخل Electron (main.js)

مراجعة كل IPC handlers وتنظيمها داخل try/catch.

عند حدوث خطأ:

تسجيله باستخدام electron-log (أو النظام الحالي).

إرجاع قيمة آمنة للواجهة بدون أن ينهار التطبيق.

تحسين عمليات التحديث والإضافة بحيث:

لا تسبب تهنيق أو تجمّد.

أي خطأ في جزء من العملية لا يؤدي لكسر التطبيق بالكامل.

إضافة معالجات أخطاء عامة:

process.on('unhandledRejection', ...);

process.on('uncaughtException', ...);

4) الأداء مع 100 صف بيانات

ضمان أن التطبيق يعمل بسلاسة عند:

إدخال 100الف صف

البحث والفلترة بـ 100 الف صف

تحميل البيانات في لوحة التحكم

التصدير إلى Excel/PDF

وضع حماية بسيطة في حال زاد حجم البيانات مستقبلًا (مثل تنبيه في حال تجاوز العدد المتوقع).

5) تحسين واجهة React بشكل مناسب

التأكد أن مكوّنات الواجهة تعمل بكفاءة ولا تعيد التحميل أو المعالجة بشكل غير ضروري.

استخدام useMemo و useCallback حيث يفيد فقط (بدون تعقيد زائد).

إزالة أي console.log كبيرة أو حساسة داخل الواجهة.

6) الأمان والتحسينات المكملة

إزالة أي كلمات مرور مكتوبة داخل الكود واستبدالها بحل أكثر أمانًا (تخزين في ملف إعدادات مشفّر أو داخل قاعدة البيانات).

تنظيف وترتيب الملفات، حذف الأكواد المتكررة أو غير المستخدمة، توحيد الأسلوب (Code Style).

7) الاختبار والتسليم

المطلوب تنفيذ اختبار فعلي يشمل:

إدخال ~100 صف

البحث بقيم مختلفة

تعديل وحذف

التصدير إلى Excel

إنشاء PDF لعدد من السجلات

التأكد من عدم ظهور أي:

تجمّد

بطء

أخطاء غير معالجة

انهيارات للتطبيق

التسليم النهائي يشمل:

الكود النهائي المنظّم والمحسّن

ملف مختصر يوضح:

ما تم تعديله

كيف تشغّل المشروع وتبني نسخة التنفيذ (build)

أي توصيات مستقبلية

شروط المتقدم

خبرة مثبتة في:

Electron (أساسي جدًا)

React + Vite

SQLite (sqlite/sqlite3) داخل Node/Electron

القدرة على فهم الكود الحالي وتحسينه—not إعادة كتابة المشروع من الصفر.

التفرّغ التام خلال مدة التنفيذ (لا يوجد دوام، دراسة، أو مشاريع أخرى خلال الفترة).

الاهتمام بالتفاصيل، وضبط الأخطاء، وتحسين الاستقرار.

مدة التنفيذ المتوقعة

بين 7 إلى 14 يوم عمل فعلي — حسب قدرة المطوّر وخبرته.

أسئلة للمتقدمين

هل لديك أمثلة أو مشاريع سابقة باستخدام Electron + SQLite؟

ما المدة التي تتوقعها لإتمام العمل بجودة عالية؟

ما نظام التشغيل الذي تعمل عليه عادة؟

هل تستطيع الالتزام بالتفرّغ الكامل خلال مدة المشروع؟

تقدم للمشروع

العروض المقدمة

السلام عليكم، أتقدم للعمل على مشروعكم لأنه مناسب لخبرتي. لدي خبرة في تطوير تطبيقات باستخدام Electron و React و Vite و SQLite، إضافة إلى خبرة في تحسين الأداء وتن...

محمد حسام ي.

مؤمرحبا سيدي ، لقد رأيت عرضك للتو ، و قد اعجبي مشروعك هذا و اريد مساعدتك فيه لدي خبرة في تطبيقات سطح المكتب باستخدام sqlite و electron و ايضا tauri , و كشخص لدي...

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

قبولك لهذا العرض يعتبر اتفاقاً بينك وبين المستقل وسيبقى موقع مستقل وسيطاً بينكما حتى تسليم المشروع. لن تتمكن من تغيير العرض أو إلغائه لاحقًا لذلك تأكد من اختيارك للعرض المناسب باتّباع النصائح التالية:

  • راجع صفحة حساب المستقل الذي اخترته واطّلع على أعماله السابقة
  • إن كانت هناك تفاصيل غير مذكورة في المشروع، فتواصل مع المستقل وأخبره بها أولًا
  • بإمكانك أن تتواصل مع المستقل وتسأله عن أية أمور تحتاجها
  • احرص دائمًا على إبقاء التواصل مع المستقل داخل الموقع قدر الإمكان وذلك لضمان حقوقك
  • لا تتردد من التواصل معنا ان احتجت لأي مساعدة، نحن نحب مساعدتك!

المستقل غير متاح لاستلام مشاريع، يمكنك ارسال تنبيه له لقبول العرض وإعادة المحاولة بعد بضعة ساعات، أو اختيار عرضاً من مستقل آخر.