أونلاينمن 2025

Web · CMS

المعمارية والباك إند Go والـ CMS والموقع

Solovit CMS

الموقع الرسمي للبراند والـ builder اللي وراه: المالك بيعدّل الصفحات من بلوكات، يدوس Publish، والموقع الـ static السريع بيبني نفسه من جديد في حوالي دقيقة.

  • نوع بلوك، كل واحد بأشكال

  • اختبار Go

  • كونتينر: الموقع والـ API والأدمن

  • من Publish لحد ما يبقى live

الـ builder: البلوكات والمعاينة الحية والإعدادات

01/المشكلة

الموقع بدأ صفحات static مع API صغير بـ PHP و MySQL للأسعار. كل صفحة منتج كانت بتتضاف في الكود، فتغيير جملة كان معناه تعديل كود ونشر من جديد.

الهدف: المالك يبني ويعدّل صفحات المنتجات بإيده، بالعربي والإنجليزي، من غير ما الموقع يبطأ ولا أي لينك شغال يبوظ.

02/القيود

  • 01يفضل بسرعة الموقع الـ static، والزائر عمره ما يستنى قاعدة بيانات.
  • 02روابط /api/*.php القديمة تفضل ترد بعد ما سبنا PHP.
  • 03كل بلوك يشتغل يمين وشمال، فاتح وغامق، والمحتوى طويل أو فاضي.
  • 04يشتغل كخدمة صغيرة واحدة على سيرفر مشترك.

03/المعمارية

الزوار

  • Static site · Next.js 14 export
  • ar / en · light / dark

المالك

  • Visual builder
  • pages · media · analytics
  • Publish

خدمة Go

  • static server
  • API + legacy .php aliases
  • rebuild queue
  • sessions · CSRF

البيانات

  • SQLite
  • uploads volume
  • built site
ملف Go واحد بيقدّم الموقع المبني والـ API والأدمن من كونتينر واحد. الـ Publish بيحط إعادة بناء في الطابور، والموقع الجديد بيتبدّل أول ما يخلص.

04/القرارات

  1. إعادة البناء عند النشر، والتقديم static

    المحتوى في SQLite، بس الزائر بياخد HTML مبني جاهز. لوحة التحكم بتقول «بيتبني» وبعدين «التعديلات بقت live»، والـ HTML متقدّم من غير كاش فمحدش محتاج hard refresh.

    التمن: التعديل بياخد حوالي دقيقة عشان يظهر مش ثانية. أما قفل صفحة فبيحصل فورًا: بترجع 404 من غير إعادة بناء.

  2. شيلنا PHP من غير ما لينك يبوظ

    الـ API بتاع PHP و MySQL اتكتب من جديد بـ Go على SQLite endpoint ورا التانية، وخدمة Go لسه بترد على مسارات الـ .php القديمة. وفيه أمر migrate بيحمّل الـ dump القديم من MySQL، فالأسعار والمحتوى ومستخدمين الأدمن اتنقلوا زي ما هم.

  3. نظام بلوكات واحد لمنتجات كتير

    21 نوع بلوك (hero ومميزات وجدول المكونات وأسئلة شائعة...) بأشكال وحركة دخول ولون مميز لكل منتج. صفحة المنتج بقت داتا، فالمنتج الجديد بيتبني من لوحة التحكم مش من الكود.

05/الشاشات

الصفحات: كل صفحة ومنتج، شغال أو مقفول
الصفحات: كل صفحة ومنتج، شغال أو مقفول
صفحة منتج مبنية من بلوكات، live على الموقع
صفحة منتج مبنية من بلوكات، live على الموقع

06/الأدوات

GoSQLiteNext.js 14ReactTypeScriptTailwind CSSDockerCaddyCloudflare

النظام اللي بعدهJoTV
محمد يوسف علي | مهندس أنظمة للشركات