CMS بلا رأس قابل للتخصيص و التمديد

توضح هذه المقالة كيف يتم استخدام Strapi بواسطة Laimuna

ليمونة
ليمونة

سبب اختيار Strapi

اكتشفنا Strapi من خلال البحث عن CSM لـ Node.js. درسنا البدائل الأخرى لكننا قررنا إستخدام سترابي للأسباب التالية:

  • الكود مفتوح المصدر لذا يمكننا تخصيصه لحالات استخدامنا المحددة
  • السهولة في التجربة في البداية
  • APIs حيث يدعم كلاً من RESTful و GraphQL API
  • واجهة مستخدم إدارية سهلة وبديهية لتكوين و تحديث المحتوى
  • Social Auth حيث يدعم سترابي المصادقة الاجتماعية من خلال OAuth

تجربة إقامة سترابي

ليس من السهل اتخاذ قرار بشأن تيك ستاك جديد ، خاصة بالنسبة لشيء كبير مثل CMS ، حيث سيكون التغيير صعبًا للغاية. كان علينا التأكد من اختيار نظام إدارة محتوى متين مع دعم طويل الأمد.

بيئة التطوير

نعتقد أن إعداد بيئة تطوير مع سترابي أمر سهل للغاية ومباشر استنادًا إلى المستندات. ساعدتنا الخطوات الموجودة على موقع الويب لسترابي على البدء بسرعة.

بيئة الإنتاج

تتركز بنيتنا الأساسية على AWS وأردنا نشر Strapi في بعض خدمات AWS. بعد استكشاف بعض الخيارات ، قررنا استخدام AWS Elastic Container Service (ECS) وخدمة Fargate.

عملية اختيار قاعدة البيانات

لإلمام فريقنا بـ MySQL ، اخترنا MySQL كمحرك قاعدة بيانات CSM.

RESTful مقابل واجهة برمجة تطبيقات GraphQL

في البداية ، لعبنا مع RESTful API Strapi الذي يوفره. حتى أننا استخدمنا المكوّن الإضافي لمولد مواصفات OpenAPI حتى نتمكن من إنشاء كود عميلنا (Client code) إلى واجهة برمجة التطبيقات. ومع ذلك ، سرعان ما أدركنا أن احتياجات تطبيقاتنا يتم تلبيتها بشكل أفضل مع GraphQL للأسباب التالية:

  • عدد العلاقات (Relations) في قاعدة بياناتنا
  • أنماط عرض متعددة على واجهتنا الأمامية مثل البطاقات والمعاينة والتفاصيل

مصادقة المستخدم

أردنا دعم مصادقة المستخدم النهائي بما في ذلك مع مقدمي الخدمات الاجتماعية المدعومين من قبل Strapi دون جهد.

التكاملات

لقد سررنا بالسهولة التي يتكامل بها Stripi مع بعض تطبيقات الطرف الثالث.

S3

نقوم بتخزين جميع الأصول التي تم تحميلها من خلال Media Library plugin

RDS

نحن نستخدم RDS مع قاعدة بيانات MySQL لتخزين محتوى سترابي.

القوليا

عندما يتم إنشاء أو تحديث سجلات معينة في جداول محددة مسبقًا ، يمكننا تلقائيًا إرسال حقول معينة لفهرستها في تطبيق Algolia الخاص بنا.

التحديات مع سترابي

كانت هناك بعض المطبات على الطريق مع سترابي.

دعم TypeScript

إحتجنا لكتابة أكواد مخصصة (Custom Resolvers) للتعامل مع تدفق المصادقة المخصص. يجب أن يكون هذا بسيطًا بشكل عام ، ومع ذلك ، لأن سترابي يدعم فقط جافا سكريبت ، وكل شيء تقريبًا في ال global scope ل Node.js ، لم يكن التطوير والتصحيح سلسًا.

دعم RTL العربية

نظرًا لأننا نستخدم سترابي لتخزين النص العربي ، فقد واجهنا صعوبة في عرض RTL.

البحث عن الوسائط

لا يمكن البحث في ملفات الوسائط التي تم تحميلها بالاسم من داخل واجهة مستخدم Strapi Admin.

خلاصة

يسعدنا اختيار ستريبي ليكون نظام إدارة المحتوى باللغة العربية ، ونتطلع إلى استخدام المزيد من ميزاته بالإضافة إلى المكونات الإضافية التي يوفرها المجتمع.