تجريبي

كيف تعمل إصدارة

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

١. كل شيء ملف نصي

كل فنان وألبوم وأغنية في إصدارة ملف نصي صغير مكتوب بصيغة Markdown، وهي صيغة بسيطة تستطيع قراءتها حتى لو لم ترها من قبل. وفي أعلى كل ملف توجد المعلومات بصيغة تُسمّى YAML:

---
title: { ar: "مدينة", en: "Madina" }
released: 2026-09-12
links:
  spotify: https://open.spotify.com/track/...
---

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

٢. Git يتذكّر كل تغيير

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

لإضافة أغنية لا تحتاج إلى تسجيل الدخول في الموقع. أنت تقترح تغييرًا يُسمّى طلب سحب (Pull Request). ويفحصه روبوت (سير عمل في GitHub Actions) فورًا: هل التواريخ صحيحة؟ هل الروابط فعلًا من سبوتيفاي أو يوتيوب؟ وإن وجد خطأً أخبرك به. ثم يراجعه إنسان ويدمجه.

٣. البناء: نطبخ مرة واحدة بدل الطبخ لكل ضيف

معظم المواقع تبني الصفحة لحظة طلبها، مثل مطعم يطبخ كل طلب على حدة. أما إصدارة فتطبخ كل شيء مسبقًا. أداة اسمها Astro تقرأ كل الملفات النصية وتحوّلها إلى صفحات ويب جاهزة (HTML) في ثوانٍ قليلة. ويُسمّى هذا موقعًا ثابتًا (Static Site).

وأثناء البناء تصغّر كل صورة وغلاف ألبوم إلى صيغة الصور الحديثة WebP، فتُحمَّل الصفحات بسرعة حتى على اتصال جوّال ضعيف.

٤. يصلك من مكان قريب منك

تُرفع الصفحات الجاهزة إلى Cloudflare Pages، وهي شبكة توصيل محتوى (CDN): نسخ من الموقع موزعة على مراكز بيانات في أنحاء العالم، فحين تفتح إصدارة تصلك من أقربها إليك.

نستخدم الخطة المجانية، ولها حدود، منها مثلًا ٢٠٬٠٠٠ ملف كحدٍّ أقصى في كل رفع. والعمل بذكاء داخل حدود كهذه جزء كبير من الهندسة الحقيقية: لهذا تظهر الألبومات والأغاني أقسامًا داخل صفحة الفنان بدل أن تكون لكل منها صفحة مستقلة.

٥. بحث بلا خادم

البحث يحتاج عادةً إلى خادم، أما بحثنا فيعمل داخل متصفحك. أثناء البناء ننشئ أيضًا قاعدة بيانات صغيرة من نوع SQLite، وهو النوع نفسه الموجود داخل كل هاتف تقريبًا. وحين تفتح صفحة البحث يحمّلها متصفحك مرة واحدة ويبحث فيها بأداة sql.js: وهي SQLite مترجمة إلى WebAssembly، تقنية تتيح تشغيل برامج سريعة غير مكتوبة بـJavaScript داخل صفحة الويب.

٦. لغتان واتجاهان

العربية تُقرأ من اليمين إلى اليسار، والإنجليزية من اليسار إلى اليمين. يستخدم الموقع CSS المنطقي (Logical CSS)، أي يقول «البداية» و«النهاية» بدل «اليمين» و«اليسار»، فينقلب التصميم نفسه تلقائيًا بشكل صحيح في اللغتين.

ومن التفاصيل الطريفة: للعدّ في الإنجليزية صيغتان فقط (1 track و2 tracks)، أما العربية فلها ست صيغ: صفر، وواحد، ومثنى، وقليل، وكثير، وغير ذلك (أغنية واحدة، أغنيتان، ٣ أغانٍ، ١١ أغنية). وأداة Intl.PluralRules المدمجة في المتصفح تختار الصيغة الصحيحة.

٧. المشغّلات لا تُحمَّل إلا عندما تضغط تشغيل

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

٨. من أين تأتي البيانات: الذكاء الاصطناعي والبشر

البحث عن الإصدارات الجديدة يدويًا يستغرق وقتًا طويلًا جدًا، لذلك تستخدم إصدارة خط بيانات (Data Pipeline) آليًا مبنيًا بأداة Pipo. تساعد نماذج ذكاء اصطناعي (DeepSeek) في جمع المعلومات العامة عن الفنانين والإصدارات وترتيبها، وكُتبت شيفرة الموقع نفسها بمساعدة Claude Opus 5.5.

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

٩. كم يكلّف كل هذا؟

تقريبًا لا شيء: اسم النطاق (الدومين) فقط. يستضيف GitHub الشيفرة ويشغّل الروبوتات مجانًا، وتقدّم Cloudflare الموقع مجانًا. اختيار الأدوات المناسبة قد يجعل مشروعًا حقيقيًا شبه مجاني.

تريد أن تتعلّم هذا بنفسك؟

عدّل هذه الصفحة على GitHub