نظرة عامة#
Workora سكربت متكامل لمنصة عمل حر على الويب. ينشر العملاء مشاريع ويستقبلون عروضاً، أو يشترون خدمات جاهزة. تتحرك الأموال عبر ضمان بالمراحل، ولكل عضو محفظة، وتُسجَّل كل دفعة في دفتر قيد مزدوج.
إصدار المنتج 1.0.0 ومبني على Laravel 13. فيه موقع عام ومنطقة للأعضاء ولوحة إدارة، ويأتي بالإنجليزية والعربية.


المتطلبات#
| العنصر | المطلوب |
|---|---|
| PHP | 8.4 أو أحدث |
| إضافات PHP | bcmath وctype وcurl وfileinfo وgd (مع WebP) وintl وmbstring وopenssl وpdo_mysql وtokenizer وxml وzip. إضافة sodium مطلوبة للتحديثات الموقّعة فقط. |
| قاعدة البيانات | MySQL 8.0+ أو MariaDB 10.6+ (utf8mb4) |
| خادم الويب | Apache أو Nginx أو LiteSpeed مع HTTPS |
| Cron | مهمة واحدة تعمل كل دقيقة |
لا تحتاج Node.js ولا Composer على الخادم: الحزمة تأتي بتبعياتها وأنماطها المجمّعة.
التثبيت#
- ارفع محتويات المجلد
1-Source/workoraإلى خادمك. يجب أن يشير جذر الويب إلى المجلدpublic. - أنشئ قاعدة بيانات MySQL فارغة ومستخدماً لها.
- افتح
https://your-domain/installفي المتصفح. يفحص المثبّت خادمك ثم يسأل عن قاعدة البيانات واسم الموقع وعنوانه والمنطقة الزمنية وحساب المدير. - عند الانتهاء يعرض سطر cron المطلوب إضافته. ثم سجّل الدخول من
/loginوافتح/admin.
سطر الأوامر (اختياري)
php artisan app:install \
--db-name=workora --db-user=root --db-password=secret \
--app-name="My Marketplace" --app-url=https://example.com \
--admin-name="Admin" --admin-username=admin \
--admin-email=admin@example.com --admin-password="a-strong-password"
أضف --create-database لإنشاء قاعدة البيانات، و--demo لبيانات تجريبية في مواقع المعاينة فقط.
مهمة Cron#
مهمة واحدة تشغّل كل شيء: البريد والإشعارات المؤجلة والإفراج التلقائي عن العقود وانتهاء المشاريع وتجديد الباقات وتذكيرات الاجتماعات وإحصاءات التقييم ومطابقة الدفتر الليلية والنسخ الاحتياطية.
* * * * * cd /path/to/workora && php artisan schedule:run >> /dev/null 2>&1
تعرض صفحة الصحة في لوحة الإدارة هل عمل المجدوِل مؤخراً.
الخطوات الأولى#
- الإعدادات ← عام: اسم الموقع والشعار النصي والعملة الأساسية (اخترها قبل الإطلاق) وبريد التواصل والمنطقة الزمنية والدولة الافتراضية.
- المظهر: الثيم والألوان والشعار والأيقونة والعرض وأقسام الرئيسية وإشعار ملفات الارتباط.
- اللغات: فعّل اللغات وحدّد الافتراضية وراجع الترجمات.
- المدفوعات: فعّل البوابات واضبط العمولة والإيداع وقواعد السحب.
- البريد: اضبط SMTP وأرسل رسالة اختبار.
- المحتوى: حرّر الصفحات والأسئلة الشائعة والمدونة والآراء.
- التصنيفات: عدّل التصنيفات الرئيسية الـ14 والفرعية الـ125 لتناسب تخصصك.


المدفوعات#
فعّل أياً من هذه الطرق في الإعدادات ← المدفوعات. تعرض كل طريقة عنوان webhook لتسجيله لدى المزوّد.
| الطريقة | ملاحظات |
|---|---|
| Stripe | بطاقات. المفتاح السري وسر توقيع webhook. العنوان: /webhooks/stripe |
| PayPal | تجريبي أو حقيقي؛ معرّف العميل والسر ومعرّف webhook. العنوان: /webhooks/paypal |
| Paystack وRazorpay وFlutterwave | المفاتيح وأسرار webhook؛ العناوين تحت /webhooks/{gateway} |
| حوالة بنكية | بيانات حسابك؛ يرفع الأعضاء إثباتاً ويعتمده الفريق |
للإيداع حد أدنى وأقصى. السحب عبر PayPal أو بيانات بنكية بحد أدنى ورسم اختياري وفترة احتجاز اختيارية وحد للطلبات المفتوحة.
البريد الإلكتروني#
اضبط الإعدادات ← البريد على خادم SMTP وأرسل رسالة اختبار. حتى ذلك الحين تُكتب الرسائل في السجل. الإشعارات مؤجلة وتُسلَّم عبر cron خلال دقيقة. يختار الأعضاء الفئات التي تصل صندوقهم من إعدادات الإشعارات.
المظهر والثيمات#
تتحكم الإدارة ← المظهر بكامل الشكل دون كود: أحد ثماني ثيمات واللونان الأساسي والمميز وتدرج الرماديات وانحناء الزوايا والخط والظلال ونمط الغلاف ونمط الشريط الجانبي ووضع الألوان (فاتح أو داكن أو تلقائي). ارفع شعاراً (بنسخة للوضع الداكن) وأيقونة.
التخطيط: اختر عرضاً قياسياً أو واسعاً أو كاملاً وكثافة البطاقات. الرئيسية: بدّل الأقسام (شريط التصنيفات والأرقام ولماذا نحن وأفضل المستقلين والمشاريع والآراء واللافتات) وحدّد عدد صفوف التصنيفات وهل تتحرك أو تُعرض شبكة. يختار الأعضاء وضع الألوان وكذلك الثيم إن سمحت لهم.


اللغات واليمين لليسار#
تعرض اللغات اللغات المفعّلة. أضف لغة من قالب جاهز أو برمزها وحدّد اتجاهها وعلَمها، ثم افتح ترجمة لتعديل كل نص في جدول قابل للبحث واستيراد ملفات JSON وتصديرها ومعرفة ما لم يُترجم. تُترجم محتويات التصنيفات والمهارات والصفحات والمدونة والأسئلة الشائعة في محرر كل عنصر.
تتبدل الواجهة كاملة تلقائياً للغات من اليمين لليسار. ولكل لغة عنوانها القابل للأرشفة (?lang=ar) مع روابط hreflang وخريطة موقع متعددة اللغات.
كيف يعمل المال#
- يموّل العميل مرحلة من محفظته فينتقل المال إلى الضمان.
- يسلّم المستقل؛ ويقوم العميل بـالموافقة (يُفرَج عن الدفعة مطروحاً منها العمولة) أو يطلب تعديلات أو يفتح نزاعاً. إن لم يفعل العميل شيئاً يُفرَج عن الدفعة تلقائياً بعد الأيام المحددة.
- كل حركة قيد متوازن في دفتر القيد المزدوج. ومهمة ليلية تثبت أن المحافظ والضمان والإيرادات متسقة.
العمولة
حدّد نسبة المنصة في الإعدادات ← المدفوعات، وحداً أدنى للعمولة لكل دفعة اختيارياً، ونسبة مختلفة لأي تصنيف، ونسبة أقل لأي باقة. الأولوية: الباقة ثم التصنيف ثم الافتراضية. يحتفظ العقد بالنسبة التي أُنشئ بها.
الأعضاء والإشراف#
لأدوار الفريق (مدير ومشرف ومالية ودعم) صلاحيات محدودة بما يحتاجونه؛ وحسابات الفريق تتطلب مصادقة ثنائية. من المستخدمون يمكنك البحث وتعليق الأعضاء أو حظرهم وتعيين الأدوار. يمكن مراجعة المشاريع والخدمات قبل نشرها؛ وللتقييمات والبلاغات طوابيرها؛ ويبتّ الفريق في النزاعات بملاحظة مسجّلة.
المحتوى وSEO#
أدر الصفحات والمدونة والأسئلة الشائعة والآراء من المحتوى، وكلها قابلة للترجمة. يولّد Workora خريطة موقع ببدائل اللغات ووسوم canonical وOpen Graph وبيانات منظمة للخدمات وقواعد robots. الصفحات العامة سريعة ومناسبة للتخزين المؤقت.
الباقات وConnects والحدود#
ثلاث طرق مستقلة للربح وللتحكم بالنشاط؛ استخدم أياً منها أو كلها:
- Connects: العروض تكلّف نقاطاً. حدّد سعر العرض والنقاط المجانية وحجم الحزمة وسعرها.
- الباقات: اشتراكات شهرية تمنح Connects وتخفّض العمولة وتغيّر الحدود.
- الحدود (الإعدادات ← الحدود والباقات): فعّل أياً من عدد العروض يومياً أو أسبوعياً أو شهرياً وعدد الخدمات وعناصر المعرض والعقود الجارية معاً. يحصل الأعضاء بلا باقة على الأرقام المجانية؛ ولكل باقة أرقامها (0 تعني بلا حد).
يرى الأعضاء استخدامهم في صفحة الباقات ويُبلَّغون عند بلوغ حد.


الملفات ومعرض الأعمال والتوثيق#
يبني المستقلون الثقة بعنوان مهني ومهارات وسعر ساعة وروابط وخبرات ومؤهلات وشهادات ولغات (تبويب السيرة الذاتية) ومعرض أعمال يعدّلونه ويخفونه ويميّزونه ويرتّبونه، وسيرة قابلة للطباعة على /u/username/resume. يعرض شريط قوة الملف ما ينقص.
التوثيق: البريد والصورة الشخصية والهوية (جواز أو بطاقة أو رخصة). تُعاد ترميز المستندات وتُحفظ على القرص الخاص ولا يراها إلا الفريق في الإدارة ← التوثيق حيث تعتمد أو ترفض بسبب. توثيق الهاتف معروض بعبارة «قريباً». يمكن اشتراط هوية موثّقة قبل أول سحب.


المراسلة والاجتماعات#
في المراسلة قائمة المحادثات والدردشة ولوحة جانبية بالشخص والمشروع والطلبات والعقود والاجتماعات والملفات المشتركة، كلٌّ منها يقود إلى صفحته. تصل الرسائل حيّة وتظهر إشعارات القراءة وتُدعم المرفقات. قبل وجود عقد تُحجب عناوين البريد وأرقام الهاتف والروابط لحماية عمولتك (يمكنك تغيير ذلك).
الاجتماعات: يستطيع أي طرف جدولة اجتماع: اختر الوقت (يظهر لكل شخص بمنطقته الزمنية) والمدة ورابطاً من Zoom أو Google Meet أو Teams أو Webex أو Jitsi أو Whereby أو Skype (أو أنشئ غرفة Jitsi مجانية). تظهر الدعوة بطاقةً فيها قبول ورفض وأضف إلى التقويم (ملف ics) وزر انضمام يُفتح قبل الموعد بـ15 دقيقة. ويُذكَّر الطرفان. من الإعدادات ← الرسائل والملفات يمكنك إيقاف الاجتماعات أو السماح بأي رابط https.


دردشة الدعم#
يفتح الأعضاء الدعم للتحدث مع فريقك؛ ويستخدم الزوار نموذج الاتصال ويصلهم الرد بالبريد. من الإدارة ← الدعم تفلتر بالحالة والموضوع والأولوية والمُسنَد إليه، وتُسنِد المحادثات وتكتب ملاحظات خاصة وتُدرج ردوداً محفوظة، وترى زمن أول رد وتقييمات الأعضاء. بعد إغلاق المحادثة يقيّم العضو المساعدة.
الإحالات والكوبونات والإشعارات#
الإحالات مفعّلة افتراضياً: يكسب الداعي مكافأة عندما يُكمل العضو المدعو عقداً مدفوعاً. للأعضاء صفحة مشاركة بأزرار نسخ ومشاركة وعدد زيارات ونتائج؛ حدّد المكافأة وهدية ترحيب وأدنى عقد في الإعدادات ← الإحالات، وشاهد الإجماليات في الإدارة ← الإحالات. تضيف الكوبونات رصيداً للمحفظة مرة لكل عضو بحدود وتاريخ انتهاء.
للإشعارات قائمة جرس ومركز بفلاتر وتبديل مقروء وغير مقروء وحذف. ويضبط المستقلون تنبيهات المشاريع بالتصنيف والكلمات المفتاحية.
تطبيق قابل للتثبيت (PWA)#
ينشر الموقع ملف manifest وعامل خدمة صغيراً يخزّن CSS وجافاسكربت المجمّعة وصفحة عدم الاتصال فقط، ولا يخزّن صفحات الأعضاء أبداً. تعرض الهواتف إضافة إلى الشاشة الرئيسية بلون علامتك واسمها.
واجهة REST#
تأتي واجهة JSON للقراءة فقط. فعّلها من الإعدادات ← عام. ينشئ الأعضاء رموزاً من صفحة الأمان (تظهر مرة واحدة ويُخزَّن هاش فقط وبانتهاء اختياري). أرسل Authorization: Bearer wk_...؛ كل رمز محدود بـ60 طلباً في الدقيقة. القيم المالية أعداد صحيحة بالوحدة الصغرى بجانب رمز العملة.
| المسار | يعيد |
|---|---|
GET /api/v1/me | ملف صاحب الرمز |
GET /api/v1/categories | التصنيفات وفروعها |
GET /api/v1/gigs و/gigs/{id} | الخدمات المنشورة (فلاتر q وcategory) |
GET /api/v1/projects و/projects/{id} | المشاريع العامة المفتوحة |
GET /api/v1/wallet و/orders و/contracts و/notifications | سجلات صاحب الرمز |
curl -H "Authorization: Bearer wk_your_token" https://your-site.example/api/v1/gigs?q=logoالنسخ الاحتياطي والصحة#
نسخة يومية لقاعدة البيانات ونسخة أسبوعية كاملة (مع الملفات) تعملان بالجدولة وتُعرضان في الصحة حيث يمكنك تنزيلها. وتفحص الصفحة نفسها PHP والإضافات والصلاحيات والمجدوِل والطابور والدفتر ومساحة القرص. اضبط مسار mysqldump في .env (BACKUP_MYSQLDUMP) إن لم يكن في مسار الخادم.
التحديث#
- انسخ قاعدة البيانات والملفات احتياطياً.
- افتح الإدارة ← التحديثات وارفع حزمة التحديث الموقّعة وراجع الملخص.
- طبّقه. يتحقق Workora من التوقيع وينسخ الملفات الجديدة ويشغّل الترحيلات ويمسح الذاكرة المؤقتة. يبقى
.envوالمرفوعات والإعدادات.
على الخوادم دون إضافة sodium يمكن التحديث يدوياً: ارفع الملفات الجديدة فوق القديمة ثم شغّل php artisan migrate --force وphp artisan optimize:clear.
بيانات العرض وموقع المعاينة#
الأمر php artisan app:demo يضيف أعضاء ومشاريع وخدمات تجريبية لأي تثبيت؛ و--full يملأ كل تصنيف فرعي. لمعاينة عامة اضبط DEMO_MODE=true في .env وشغّل php artisan demo:reset؛ ويعيدها cron كل ساعة. في وضع المعاينة تظهر لافتة بالحسابات التجريبية وزر دخول بنقرة وتُحجب الإجراءات الخطرة (الإعدادات والفريق والتحديثات والنسخ والمدفوعات الحقيقية). اضبط DEMO_PURCHASE_URL لإظهار زر «اشترِ».
قائمة الأمان#
- قدّم كل شيء عبر HTTPS وأبقِ
APP_DEBUG=false. - أبقِ مجلد التطبيق خارج جذر الويب العام أو امنع الوصول إليه.
- على الفريق استخدام المصادقة الثنائية.
- أبقِ
.envخاصاً واحتفظ بنسخة منه على حدة. - استخدم كلمة مرور قوية لقاعدة البيانات وقيّد الوصول إليها بالخادم.
- ثبّت ClamAV واضبط
CLAMSCAN_PATHلفحص كل رفع (اختياري). - شغّل
composer auditعند تحديث التبعيات.
مضمَّن: سياسة أمان محتوى صارمة بـ nonce وحدود للإجراءات الحساسة وتخزين خاص للمستندات والمرفقات وصور معاد ترميزها واختبار آلي يحاول الوصول لبيانات الأعضاء الآخرين وتحديثات موقّعة بـ Ed25519.
استكشاف الأخطاء#
| المشكلة | الحل |
|---|---|
| صفحة فارغة أو خطأ 500 | راجع storage/logs/laravel.log. تأكد أن storage وbootstrap/cache قابلان للكتابة وأن PHP 8.4+. |
| "Your Composer dependencies require PHP 8.4" | اختر PHP 8.4 للنطاق من لوحة الاستضافة. |
| الأنماط مفقودة | يجب أن يكون جذر الوثيقة public وأن يكون مجلد build فيه مرفوعاً. |
| صور المرفوعات مفقودة | أنشئ رابط التخزين: public/storage يشير إلى storage/app/public. |
| لا يصل البريد | راجع إعدادات SMTP وتأكد أن cron يعمل كل دقيقة. |
| رفض الملفات المرفوعة | ارفع upload_max_filesize وpost_max_size. |
| المدفوعات تبقى معلّقة | تأكد من تسجيل عنوان webhook للبوابة وأنه قابل للوصول. |
الدعم والترخيص#
يُباع Workora على CodeCanyon. يتبع الدعم والتحديثات سياسة دعم Envato، ويشمل المساعدة في التثبيت وتقارير الأخطاء؛ ولا يشمل العمل المخصص. المنصة التي تحصّل من الأعضاء رسوماً أو عمولات أو اشتراكات تحتاج الترخيص الممتد. مكونات الأطراف الثالثة مدرجة بتراخيصها في الحزمة.
لا يوجد قسم يطابق بحثك.