انتقل إلى المحتوى
cutty.dev
All posts

البنية التقنية لـ cutty.dev - اختيارات واعية

ما الذي يوجد تحت سطح cutty.dev ولماذا؟ بدون تبشير: فلسفة تعتمد على مجموعة أدوات روتينية ومستقرة، واستضافة في الاتحاد الأوروبي، وخصوصية مدمجة في البنية بحيث يمكن لشخص واحد إدارتها.

معظم مقالات "حزمة تقنياتي" هي قائمة فخور بالابتكارات الحديثة. هذا المقال يتحدث عن شيء آخر — عن الفلسفة التي تقف وراء اختيارات cutty.dev: الممل والمستقر بدلاً من العصري، الأوروبي بدلاً من الأمريكي، خاصٌ بطبيعته، وبسيطٌ بما يكفي ليتمكن شخص واحد من صيانته.

الإطار: Astro (التوليد من جانب الخادم)

cutty.dev هو تطبيق مبني باستخدام Astro ويتم عرضه من جانب الخادم. كل طلب يمر عبر الخادم، الذي يبني الصفحة ديناميكيًا ثم يُردّ بـ HTML جاهز.

لماذا: أردتُ التصييرَ على جانب الخادم دون تعقيداتٍ كبيرة، ودعمًا جيدًا للعديد من اللغات مُدمجًا في إطار العمل نفسه، وسرعةً بلا عبء إضافي. يوفر Astro كل ذلك، ويبقى الكودُ واضحًا — وهو ما يُعدُّ أكثر قيمةً من أي ميزة عابرة في مشروعٍ تقوده وحيدًا.

قاعدة البيانات: SQLite

قاعدة بيانات واحدة، وملف واحد. بالإضافة إلى طبقة استعلامات ودية لتايب سكريبت (TypeScript)، مما يجعل أي تغيير في بنية البيانات يُظهر الأخطاء مباشرةً في الكود بدلاً من بيئة الإنتاج.

لماذا: يُعد cutty.dev في المقام الأول "قراءةً كثيفة" — كل نقرة على رابط تعني قراءة وزيادة العداد. SQLite يؤدي هذا العمل بشكل ممتاز، حتى مع حركة مرور يومية كبيرة جدًا. النسخ الاحتياطي هو مجرد نسخ ملف واحد — بدون طقوس المزامنة، ولا سكريات معقدة. البساطة هنا ليست توفيرًا على الجودة؛ إنها قرار واعٍ بأن الأجزاء المتحركة الأقل تعني أشياء أقل يمكن أن تتعطل.

الاستضافة: خادم في الاتحاد الأوروبي

خادم مخصص في الاتحاد الأوروبي، شهادة TLS خاصة، وكيل عكسي مع HTTPS تلقائي، تطبيق مُعبَّأ في حاوية.

لماذا: هذا هو الأساس الذي يعالج به cutty.dev البيانات. تحكم كامل في مواقعها (وهو أمر حاسم للعملاء في الاتحاد الأوروبي وللائحة العامة لحماية البيانات GDPR)، وعدم الاعتماد على مزود واحد، وعدم وجود نسخ تلقائي إلى الولايات المتحدة كما توفره المنصات السحابية الكبرى، وتكلفة متوقعة بدلاً من فاتورة تعتمد على حجم الحركة. كانت المنصات الغربية المريحة ستوفر بداية أسرع — ولكن مقابل الثمن المتمثل في المكان الذي تستقر فيه بيانات مستخدميك فعلياً.

الترجمات: نموذج ذكاء اصطناعي محلي

يقوم cutty.dev بالترجمة إلى 25 لغة، وتُجرى الترجمات باستخدام نموذج ذكاء اصطناعي محلي ومفتوح المصدر يعمل على بنيتنا التحتية الخاصة.

لماذا: لا يخرج أي نص من الواجهة إلى الخارج — لا نرسله إلى أي مزود ذكاء اصطناعي خارجي. يتحقق ذلك بتكلفة صفرية لكل عملية ترجمة وتحكم كامل في الجودة: يمكننا تحديثها متى شئنا. الترجمة الآلية تتطلب دائمًا مراجعة بشرية — وقد خضع كل لغة لمثل هذه المراجعة — ولكن القيام بذلك داخليًا يعني أن الخصوصية ليست خيارًا في قائمة الأسعار، بل سمة من سمات البنية.

CSS: أولوية الأدوات (Tailwind)

نظام واحد للأنماط، بدون CSS-in-JS، وبدون ملفات أنماط منفصلة. كل شيء مباشرة داخل القوالب.

لماذا: سرعة التكرار. لا أضيع وقتي في ابتكار أسماء للفئات، والأنماط غير المستخدمة لا تصل إلى الصفحة النهائية على أي حال. تصميم موحد يفرضه النظام نفسه. بالنسبة لشخص واحد، كل دقيقة لا أقضيها في أمور جانبية تُعدّ مهمة.

التنفيذ: الحاويات

تطبيق يعمل داخل حاويات (Docker)، يتم نشره بطريقة قابلة للتكرار وقابلة للنقل.

لماذا: نفس البيئة محليًا وعلى الخادم الإنتاجي، وعدم وجود عبارة "كان يعمل لدي"، وإمكانية نقل كل شيء إلى خادم آخر في نصف ساعة إذا لزم الأمر. التنقل هو شكل من أشكال الاستقلال.

ما علمني هذا

  • الـ stack الممل يفوز. Astro، SQLite، Tailwind، الحاويات — كل شيء ناضج، جيد التوثيق، ومستقر. لا شيء ينهار في اللحظة الأقل توقعًا.
  • الاستضافة في الاتحاد الأوروبي جاهزة للإنتاج. الأسطورة القائلة بـ "يجب عليك اللجوء إلى السحابة الأمريكية الكبرى لتكون جادًا" هي مجرد أسطورة.
  • الذكاء الاصطناعي المحلي أمر واقعي. لا حاجة لتسليم بياناتك إلى واجهة برمجة تطبيقات خارجية للحصول على ترجمات جيدة.
  • يمكن لشخص واحد إطلاق منتج يبدو وكأنه من عمل فريق. الوقت مورد أغلى من المال، لذا كان كل خيار هنا يهدف بالتحديد إلى حماية الوقت.

شاهد مباشرًا. للاستفسارات حول النهج التقني — hello@cutty.dev، أرد في نفس اليوم.