انتقل إلى المحتوى

🚀 منصة TidyFactor Go — نظام تشغيل مواقع الأعمال وإدارة المحتوى السريعة (Agile CMS)

الدليل المعماري والفني الشامل لمنصة TidyFactor Go المعتمدة على قواعد بيانات SQLite 3 (نمط WAL) والتخزين الفوري بـ JSON

تعتبر TidyFactor Go (tidyfactor-go) نظام تشغيل مواقع متكامل وإدارة محتوى رشيقة (Agile CMS) صممت خصيصاً لمواقع الشركات، الوكالات الرقمية، ومنصات المحتوى الحديثة بهدف تحقيق السيادة الكاملة والملكية الحرة 100% للبيانات وصفر اشتراكات شهرية، مع تمكين التعاون المتناغم بين المطور البشري ووكلاء الذكاء الاصطناعي.

تجمع المنصة بين واجهة أمامية فائقة السرعة بـ React 19 + Tailwind CSS v4 وخادم خلفي فائق الرشاقة بـ PHP Flight + SQLite 3 WAL.


🏛️ 1. المخطط المعماري الشامل للمنصة

               المعمارية الهندسية المركزية لمنصة TidyFactor Go
    ┌────────────────────────────────┼────────────────────────────────┐
    ↓                                ↓                                ↓
 🎨 الواجهات التفاعلية            ⚡ خادم REST API الرشيق           💾 طبقة التخزين والبيانات
  • React 19 + TypeScript          • PHP Flight Micro-Kernel        • SQLite 3 (WAL Mode)
  • محرك Tailwind CSS v4 الحديث     • 15 نقطة نهاية RESTful          • تخزين مستندي JSON-First
  • مكونات Radix UI للوصول الشامل  • تشفير Bcrypt (معامل 12)        • هجرة ومعالجة تلقائية
  • دعم أصيل للعربية RTL والإنجليزية• تحديد معدل الطلبات وحظر البوتات• ملف قاعدة بيانات وحيد
  • مساعد Gemini للترجمة وصياغة    • تطهير ملفات SVG من الـ XSS     • لقطات فورية للنسخ الاحتياطي
    │                                │                                │
    └────────────────────────────────┼────────────────────────────────┘
                     النشر الفوري على أي استضافة (Zero-Build)
              (cPanel / Apache / LiteSpeed / Nginx / Cloud VPS)

💎 2. المبادئ المعمارية والمزايا الجوهرية

1. سيادة كاملة على البيانات وقاعدة بيانات أحادية الملف

  • تعيش قاعدة البيانات بالكامل داخل ملف واحد .sqlite داخل مجلد storage/database/.
  • لا حاجة لخوادم قواعد بيانات منفصلة مثل MySQL/PostgreSQL التي تستهلك أكثر من 500 ميجابايت من الذاكرة العشوائية على الاستضافات المشتركة.
  • نقل الموقع أو أخذ نسخة احتياطية يتم ببساطة بنسخ ملف واحد فقط.

2. معالج تثبيت تلقائي فوري بضغطة زر (/install)

  • يستغرق إعداد المنصة على بيئة الإنتاج أقل من دقيقتين بدون الحاجة لكتابة سطر واحد من أوامر SQL.
  • فحص آلي لبيئة السيرفر للتحقق من إصدار PHP، دعم مكتبة SQLite، وصلاحيات المجلدات.
  • تهيئة الجداول تلقائياً، إنشاء حساب المدير الرئيسي، وقفل معالج التثبيت ذاتياً لحماية النظام.

3. ثنائية اللغة أصيلة (عربي RTL وإنجليزي LTR)

  • معمارية CSS متوافقة مع الاتجاه عبر Logical Properties (margin-inline, padding-block).
  • حقول محتوى مستقلة لكل لغة في كافة الصفحات والخدمات والمقالات.
  • تبديل فوري للغة في واجهة العميل دون إعادة تحميل الصفحة ودون أي تشوه في التصميم.

4. صفر تعقيد أو هدر في موارد الخادم

  • ينفذ موجه PHP Flight الطلبات في زمن يقل عن 5 ميلي ثانية وبأقل من 2 ميجابايت RAM.
  • تعمل المنصة بسلاسة وكفاءة متناهية على أرخص خطط الاستضافة المشتركة ($2/شهر) أو خوادم VPS الصغيرة (512MB RAM).

🗄️ 3. هيكل قاعدة البيانات وتشريح نمط SQLite WAL

تعتمد المنصة على SQLite 3 بنمط سجل المعاملات المسبق Write-Ahead Logging (WAL)، مما يسمح بالقراءة المتزامنة دون قفل الجداول أثناء عمليات الكتابة.

إعدادات الـ PRAGMA التشغيلية:

PRAGMA journal_mode = WAL;          -- تفعيل القراءة والكتابة المتزامنة بدون حظر الجداول
PRAGMA synchronous = NORMAL;        -- تحقيق التوازن المثالي بين الأمان والسرعة القصوى
PRAGMA foreign_keys = ON;           -- فرض سلامة العلاقات بين الجداول
PRAGMA busy_timeout = 5000;         -- مهلة انتظار 5 ثوانٍ قبل إرجاع خطأ SQLITE_BUSY
PRAGMA cache_size = -64000;         -- تخصيص 64 ميجابايت لكاش صفحات الذاكرة

مخطط الجداول الأساسية (SQL Schema):

-- 1. جدول الصفحات الديناميكية (مستند JSON)
CREATE TABLE IF NOT EXISTS pages (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    slug TEXT NOT NULL UNIQUE,
    title_ar TEXT NOT NULL,
    title_en TEXT NOT NULL,
    content_json TEXT NOT NULL DEFAULT '{}',   -- الأقسام، الكروت، والنصوص المنظمة
    is_published INTEGER NOT NULL DEFAULT 1,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 2. جدول المقالات والمدونة (Publications)
CREATE TABLE IF NOT EXISTS publications (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    slug TEXT NOT NULL UNIQUE,
    category TEXT NOT NULL DEFAULT 'general',
    title_ar TEXT NOT NULL,
    title_en TEXT NOT NULL,
    summary_ar TEXT,
    summary_en TEXT,
    body_markdown_ar TEXT NOT NULL,
    body_markdown_en TEXT NOT NULL,
    featured_image TEXT,
    author_id INTEGER REFERENCES users(id),
    is_published INTEGER NOT NULL DEFAULT 1,
    published_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 3. جدول المستخدمين والمديرين (Users)
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT NOT NULL UNIQUE,
    email TEXT NOT NULL UNIQUE,
    password_hash TEXT NOT NULL,               -- تشفير Bcrypt (معامل 12)
    role TEXT NOT NULL DEFAULT 'admin',        -- 'superadmin', 'admin', 'editor'
    last_login DATETIME,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 4. جدول الوسائط والملفات المرفوعة (Media)
CREATE TABLE IF NOT EXISTS media (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    filename TEXT NOT NULL,
    original_name TEXT NOT NULL,
    mime_type TEXT NOT NULL,
    file_size INTEGER NOT NULL,
    width INTEGER,
    height INTEGER,
    uploaded_by INTEGER REFERENCES users(id),
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 5. جدول إعدادات النظام والهوية (Settings)
CREATE TABLE IF NOT EXISTS settings (
    key TEXT PRIMARY KEY,
    value TEXT NOT NULL,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

⚡ 4. مراجع واجهات REST API (15 نقطة نهاية برمجية)

كافة المسارات تقبل وترجع البيانات بنمط application/json; charset=UTF-8. تتطلب المسارات المحمية جلسة إدارية نشطة أو ترويسة Authorization: Bearer <token>.

المسار البرمجي النوع الوصف الصلاحية المطلوبة
POST /api/auth/login تسجيل دخول المدير مع حماية من هجمات القوة الغاشمة ❌ عام
POST /api/auth/logout تسجيل الخروج وإلغاء صلاحية الجلسة ✅ مدير
GET /api/auth/check التحقق من حالة الجلسة الحالية وبيانات المستخدم ✅ مدير
GET /api/site جلب الإعدادات العامة للموقع، القوائم، وتوكنز الهوية ❌ عام
POST /api/site تحديث مستند إعدادات الموقع وتفريغ كاش التشغيل ✅ مدير
GET /api/pages جلب قائمة كافة الصفحات بعناوينها العربية والإنجليزية ❌ عام
GET /api/pages/:slug جلب تفاصيل ومحتوى الصفحة الكامل عبر المعرف slug ❌ عام
POST /api/pages إنشاء صفحة محتوى جديدة مع الأقسام الأولية ✅ مدير
PUT /api/pages/:id تعديل جراحي لبيانات الصفحة وأقسامها وحالة النشر ✅ مدير
DELETE /api/pages/:id حذف صفحة محتوى وأرشفة الملفات المرتبطة بها ✅ مدير
GET /api/publications جلب المقالات والتدوينات مع التصفية بالفئة والوسم ❌ عام
POST /api/publications نشر مقال جديد بنظام الماركداون ثنائي اللغة ✅ مدير
POST /api/media/upload رفع الصور والملفات وتطهير ملفات SVG من كود XSS ✅ مدير
GET /api/backup/export تصدير وتنزيل لقطة كاملة لقاعدة البيانات والوسائط (.zip) ✅ مدير
POST /api/backup/import استرجاع فوري وكامل للنظام من ملف نسخة احتياطية ✅ مدير

🔒 5. المعايير الأمنية وتحصين النظام

1. تشفير كلمات المرور وحماية تسجيل الدخول

  • استخدام دالة password_hash() مع خوارزمية PASSWORD_BCRYPT ومعامل تكلفة 12.
  • نظام حظر IP تلقائي يغلق محاولات الدخول بعد 5 محاولات خاطئة متتالية لمدة 15 دقيقة.

2. تطهير ملفات SVG من ثغرات XSS

  • فحص ملفات SVG المرفوعة عبر معالج DOMDocument البرمجي في PHP.
  • حذف وسوم الـ Script والـ iframes والخصائص التنفيذية (onload, onerror, onclick).

3. دروع حظر البوتات وزواحف جمع البيانات الضارة

تتضمن المنصة ملف .htaccess مقفل يعترض روبوتات جمع البيانات المجهدة للخادم:

# درع TidyFactor لحظر البوتات والزواحف الضارة
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Bytespider|ClaudeBot|ImagesiftBot|GPTBot|DataForSeoBot) [NC]
RewriteRule .* - [F,L]

🚀 6. دليل التثبيت والنشر على الخوادم

المتطلبات الفنية:

  • إصدار PHP: 8.2 أو 8.3+
  • إضافات PHP الإلزامية: pdo_sqlite, sqlite3, json, mbstring, fileinfo
  • خادم الويب: Apache (مع تفعيل mod_rewrite) أو LiteSpeed أو Nginx
  • الذاكرة: 64 ميجابايت كحد أدنى (يوصى بـ 128 ميجابايت+)

خطوات التثبيت:

# 1. استنساخ المستودع داخل مجلد الموقع (مثل public_html)
git clone https://github.com/TidyFactor/TidyFactor-Go.git public_html
cd public_html

# 2. تثبيت الحزم الأساسية
composer install --no-dev --optimize-autoloader

# 3. ضبط الصلاحيات للمجلدات القابلة للكتابة
chmod -R 755 storage/ uploads/

4. تشغيل معالج التثبيت عبر المتصفح:

افتح المتصفح وتوجه إلى الرابط:

https://yourdomain.com/install
1. فحص بيئة الخادم: التأكد من إضافات PHP وصلاحيات المجلدات. 2. تهيئة قاعدة البيانات: إنشاء جداول SQLite وتطبيق إعدادات الـ PRAGMA. 3. بيانات المدير: إدخال اسم المستخدم، البريد، وكلمة المرور الرئيسية. 4. الإنهاء: إغلاق معالج التثبيت ذاتياً والتحويل إلى لوحة التحكم /admin.


📦 7. النسخ الاحتياطي والتعافي من الكوارث

النسخ الاحتياطي بضغطة زر من لوحة التحكم:

  1. توجه إلى قسم النسخ الاحتياطي في لوحة التحكم /admin/backups.
  2. اضغط على زر توليد لقطة كاملة للنظام.
  3. سيتم تنزيل أرشيف مضغوط .zip يحتوي على database.sqlite ومستند site.json ومجلد الصور uploads/.

أمر النسخ عبر الطرفية (CLI):

# أخذ لقطة فورية لقاعدة البيانات والمحتوى عبر السطر البرمجي
php tools/backup.php --output=/path/to/backups/tidyfactor-go-$(date +%F).zip

🔧 8. جدول تشخيص وحل المشكلات الشائعة

العَرَض السبب المحتمل الحل الدقيق
خطأ SQLITE_BUSY عدم تفعيل نمط WAL أثناء عمليات الكتابة المتزامنة التأكد من وجود PRAGMA journal_mode = WAL; في ملف إعدادات قاعدة البيانات.
أخطاء 404 عند طلب مسارات الـ API موديول mod_rewrite غير مفعل في أباتشي تفعيل mod_rewrite والتأكد من وجود تعليمة RewriteEngine On في .htaccess.
فشل رفع الصور الكبيرة (خطأ 413) قيود حجم الملفات في إعدادات PHP زيادة upload_max_filesize = 32M و post_max_size = 32M في ملف php.ini.
خطأ Permission Denied على مجلد storage عدم ملكية خادم الويب للمجلد تنفيذ الأمر chown -R www-data:www-data storage/ uploads/ أو ضبط الصلاحية لـ 755.

🔗 الروابط والمصادر الرسمية