لماذا Railway بدلًا من Vercel
Vercel مضيف ممتاز للمواقع الساكنة والدوال عديمة الخوادم. لكنّ VeloCMS يحتاج إلى تشغيل عملية PocketBase ذات حالة إلى جانب Next.js — وهو ما لا يستوعبه نموذج Vercel عديم الخوادم بسلاسة. يشغّل Railway كليهما كحاويات دائمة على شبكة خاصة مشتركة، ما يعني أنّ استدعاءات PocketBase لا تغادر مركز البيانات أبدًا. كما يعني أنّنا نتحكّم في الجهاز والمنفذ وعملية النشر من دون أن تقتطع منصة حصةً من حركة الخروج.
لماذا PocketBase بدلًا من Supabase أو Turso
العزل بين المستأجرين هو المتطلّب الجوهري. مع PocketBase، تعيش سجلات جميع المستأجرين في قاعدة بيانات واحدة مقيّدة بمعرّف المستأجر (tenant_id) وبقواعد API واعية بالمستأجر — قاعدة بيانات بملف واحد رخيصة التشغيل وسهلة النسخ الاحتياطي. يعمل Supabase على PostgreSQL مع أمان على مستوى الصفوف ويتقاضى رسومًا لكل صفّ أو غيغابايت عند التوسّع. أمّا Turso فهو SQLite فوق libSQL، وهو خيار مثير للاهتمام، لكنّه يضيف زمن استجابة للشبكة وطبقة فوترة مقابل ما نحصل عليه مجانًا مع PocketBase المحلّي. تمنحنا حزمة JS SDK استعلامات آمنة النوع واشتراكات لحظية. بلا أعباء ORM، وبلا تعقيدات ملفات الترحيل.
لماذا Gemini بدلًا من OpenAI أو Anthropic
حقّق Gemini 2.5 Flash هدف زمن الاستجابة والتكلفة الذي احتجناه للبثّ اللحظي في المحرّر (أوامر الشَّرطة المائلة، وتقييم تحسين محرّكات البحث، وإعادة الصياغة المضمَّنة). إنّ OpenAI GPT-4o وAnthropic Claude نموذجان قديران، لكنّ تكلفة الرمز الواحد ضمن نمط استخدامنا في المحرّر جعلت Gemini الخيار الأوضح. والأهمّ أنّ نمط BYOK يتيح للمستأجرين استبدال مفتاح Gemini الخاص بهم — أو أي مزوّد مدعوم نضيفه لاحقًا. فلسنا مقيَّدين بأي مزوّد للذكاء الاصطناعي، ولا مستخدمونا كذلك.