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

هذا الموقع

أكثر من خمسين صفحة رئيسية، والتي أبقيناها تكاد تكون فارغة، عن قصد.

المجالات
برمجيات
من عمل عليه
فريق نابو ستوديوز
متى
من تموز إلى تشرين الثاني ٢٠٢٦
أين
بغداد، العراق
صُنع باستخدام
Next.js، وأدوات تصميم وبرمجة بالذكاء الاصطناعي يوجّهها فريقنا

للمساء الذي يلي اللقاء

هذا موقع نابو، استوديو إبداعي متكامل في بغداد يعمل في الإنتاج والبرمجيات والنمو لأصحاب الأعمال في العراق. صمّمناه بين تموز وتشرين الأول ٢٠٢٦ وبنيناه في تشرين الأول، ثم أعدنا ترتيب صفحته الرئيسية في تشرين الثاني، والعربية والإنجليزية فيه سواء.

يبدأ أكثر عملنا بحديث، في مكتب صاحب العمل أو على الهاتف. وفي المساء نفسه يبحث عنّا صاحب العمل على هاتفه، ليتأكد أن من جلسوا إليه أناس حقيقيون. وقد قالها موجز تصاميمنا الأولى في تموز بجملتين: «ليس الموقع ما يُقنع. الإقناع سبقه».

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

وعليه أن يفعل ذلك على شاشة الهاتف، وعلى اتصال بطيء في أكثر الأحيان، وباللغة التي يقرأ بها صاحب العمل أولاً، أيّتهما كانت.

  • الصفحة الرئيسية على الهاتف: النجمة البرتقالية والاسم وسطر «من أول فكرة إلى آخر بكسل»، على أبيض.
    الشاشة الأولى على الهاتف.
  • قسم التواصل على الهاتف: عنوان «احچولنا عن شغلكم»، وزرّ واتساب، وبداية نموذج قصير.
    النموذج الذي يملؤه صاحب العمل، وواتساب بجانبه مباشرة.

صيف في الطين

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

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

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

وقبل أن نختار شيئاً، تصفّحنا ٢٦٥ صفحة لاستوديوهات ووكالات وشركات برمجيات، على الحاسوب وعلى الهاتف، واحتفظنا بـ٤٩ منها. وعلّمنا ما رميناه أكثر مما علّمنا ما أبقيناه. سقط اثنان وعشرون من أربعة وعشرين استوديو للتصميم والهويات، وسقطت المواقع الأحد عشر كلها التي بُنيت لاستعراض الحركة والأبعاد الثلاثة، وتفكّكت على شاشة الهاتف صفحاتُ أحد عشر استوديو من اثني عشر أعجبتنا على الحاسوب. ومن خمسة وعشرين موقعاً عربياً وخليجياً لم يصمد على الحاسوب إلا اثنان، ولم يصمد على الهاتف أحد.

وغلبت استوديوهات البرمجيات البسيطة في المقارنات كلها تقريباً. ثم احتجنا شهرين آخرين، وطرقاً ملتوية كثيرة، حتى بنينا موقعاً يوافقها.

  • تصميم بلون الطين المشوي والطين الفاتح، عنوانه بالإنجليزية «عمل مُعدّ كما يجب» في ثلاثة أسطر، فوق ثلاثة أعمدة مرقّمة.
    دفتر الحسابات، ٢٤ تموز.
  • تصميم شبه أسود فيه أربعة أسافين بلون الطين المشوي فوق عنوان إنجليزي يقول إن العرض حصل وهذا هو السجل، وتحته سطر عربي.
    الطَّبعة، ٢٤ تموز.
  • تصميم من الطين الرمادي فيه عنوان إنجليزي بارز يقول «مضغوط لا مدهون»، وخلفه علامة مسمارية عملاقة مضغوطة.
    القلم، ٢٤ تموز.
  • الموقع السابق على حاسوب محمول: صفحة بلون الطين المشوي تحمل بطاقة بلون القشدة عنوانها «سجل الاستوديو»، وفيها سطر إنجليزي عن أن نجعل عملك ظاهراً ونجعله يعمل.
    الموقع الذي بنيناه ذلك الصيف: وثيقة مختومة.
  • ورقة نماذج على لون الطين المشوي: لوحة بلون القشدة عنوانها «نظام سطح الرُّقيم»، بجانب لوحة عليها أسافين، مع أختام «احتفظ» و«ربما» و«احذف».
    ورقة النماذج، ٤ آب.
  • رُقيم من الطين الرمادي على مكتب داكن، ضُغطت فيه نجمة مسمارية وعلامة ثانية.
    علامة دِنكِر مضغوطة في الطين، ٤ آب.

أكثر من خمسين صفحة رئيسية، وتعادل

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

ثم وسّعنا الدائرة. ففي ١٣ آب أعددنا عشرين صفحة هبوط، لكل منها عالمها، وعرضنا كل صفحة مع التي قبلها على محكّمين لا يعرفون أيّتهما أيّ، يحكمون بمعايير مكتوبة. فبلغت النهائي أربع منها، واخترنا يوم ٢ أيلول «حديقة الطين»، صفحة ناعمة مشمسة فيها رُقيم من الطين المشوي يُضغط باليد، وطلبنا منها في اليوم التالي خمس تنويعات.

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

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

وفي أول تشرين الأول وصلت علامتنا الجديدة: نجمة «دِنكِر» مرسومة بـ١٠٨ مربعات، بالبرتقالي والأسود ولون الرمل. ولم تُصنع لها صفحة واحدة من صفحات الصيف. كان بوسعنا أن نعيد طلاء «حديقة الطين»، لكننا كتبنا موجزاً جديداً يصف الاستوديو والصفحة ولا يقول شيئاً عن الأسلوب، وتركنا الحكم فيه لدليل الهوية.

  • صفحة هبوط داكنة عنوانها بالإنجليزية «نبني لكم أنظمة المبيعات»، بجانب رسم لقنوات الزبائن تدخل إلى رقاقة وتخرج إلى الربح.
    الصفحة الداكنة، ١٣ آب.
  • صفحة هبوط مرسومة كمكتب خشبي، عليه أمر عمل ملصوق يقول بالإنجليزية «جانب البيع كله على مكتبنا»، وقلم رصاص، وصورة لعلامتنا القديمة.
    المكتب، واحدة من العشرين.
  • صفحة هبوط بلون القشدة عنوانها بالإنجليزية «جانب البيع مشكّلاً باليد»، فوق منظر طيني مشمس فيه رُقيم كبير بلون الطين المشوي.
    حديقة الطين، اختيرت في ٢ أيلول.

تسعة أشكال، وكلها عنّا

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

ويوم ٦ تشرين الأول طلبنا ستة أساليب فنية دفعة واحدة، وضبطنا النبرة على سبعة في مقياس يبدأ بصفر للجادّ وينتهي بعشرة للمرح الصاخب. فجاءتنا رُقيماً طينياً مع اللازورد، وعالمَ لعبة بكسلات، وصفحاتِ ويب خاماً على طريقة البروتاليزم، وصفحةً تُقرأ من اليمين أولاً ويمتدّ اسمنا العربي على عرضها، ولمعانَ الكروم من مطلع القرن، ومجلةً لامعة.

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

  • صفحة بلون الرمل بخطوط سوداء وعنوان إنجليزي عن أن يعمل جانب البيع في عملك كجسد واحد، ونجمتنا في إطار مربّع.
    الصفحة الأولى على الهوية الجديدة، ٤ تشرين الأول.
  • صفحة سوداء بشبكة نقاط وعنوان «بِع أفضل واعمل بسلاسة»، سطره الثاني بالبرتقالي، بجانب النجمة في إطار.
    مختلفة تماماً، كما طلبنا.
  • صفحة رمادية على هيئة نافذة سطح مكتب من التسعينيات، فيها «بِع أفضل واعمل بسلاسة» بحروف سوداء وصفراء ثقيلة.
    هذا ما يفعله بالصفحة موجز عن بدايات الإنترنت.
  • صفحة بلون التراب من رُقُم الطين، العنوان فيها رمادي والعربية باللازوردي، ورُقيم يحمل النجمة.
    رُقيم من الطين، مع اللازورد.
  • صفحة سوداء على طريقة ألعاب البكسل، فيها غرفة بكسلات تحمل النجمة، وفوق العنوان «المستوى ٠١ بغداد».
    عالم لعبة بكسلات.
  • صفحة بلون الرمل بحروف سوداء ضخمة، وكلمة «Run» في مربع أزرق، والسطر العربي بالبرتقالي بحجم الإنجليزي.
    ويب خام على طريقة البروتاليزم.
  • صفحة خضراء داكنة يمتدّ عليها اسمنا العربي بالبرتقالي من طرف إلى طرف، والعنوان العربي قبل الإنجليزي.
    العربية أولاً.
  • صفحة سوداء بعنوان بلمعة الكروم وكرة زجاجية بلون الليلك تحمل النجمة.
    الكروم واللمعان.
  • غلاف مجلة فيه الاسم بحروف سوداء ضخمة، وبجانبه الاسم العربي بالأحمر الداكن، وصورة غلاف برتقالية للنجمة.
    مجلة لامعة.

خفضنا الصوت

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

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

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

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

الصفحة الرئيسية في التصميم: بيضاء، فيها النجمة البرتقالية والاسم وسطر «من أول فكرة إلى آخر بكسل»، تحت صف رفيع من الروابط.
التصميم، كما رُسم قبيل منتصف ليلة ٦ تشرين الأول.

بدأنا من جديد، وعن قصد

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

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

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

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

  • مقطع من الصفحة الرئيسية في التصميم، بالإنجليزية: قسم «الفهم أولاً» بعنوانه وفقرته وخطواته الثلاث المرقّمة.
    التصميم.
  • المقطع نفسه من الصفحة الرئيسية كما بُنيت في تشرين الأول، بتخطيط التصميم نفسه، وبكلمات أعدنا كتابتها منذ ذلك الحين، أول مرة في ١٣ تشرين الأول.
    البناء في تشرين الأول: التخطيط تخطيط التصميم، والكلمات أعدنا كتابتها منذ ذلك الحين، أول مرة في ١٣ تشرين الأول.
الصنعة

عربية تُكتب بالعربية

لكل لغة صفحاتها، وكل كلمة يقرؤها الزائر محفوظة في ملف لكل لغة، والملفان ملزمان بشكل واحد مشترك. فإن وُجدت جملة بالإنجليزية وغابت بالعربية، رفض الموقع أن يُبنى.

وللعربية مقاسات حروفها أيضاً، مضبوطة لها لا مقلوبة عن المقاس الإنجليزي. نصّها أكبر وأرحب: ١٩ بكسل بارتفاع سطر ١٫٨، مقابل ١٧ بارتفاع ١٫٦ في الإنجليزية. وعناوينها أثقل، ولا تُباعَد حروف عناوينها الصغيرة حرفاً حرفاً، وتشير أسهمها في الاتجاه الآخر، وتبقى أرقام الهواتف وعناوين البريد وشعارنا من اليسار إلى اليمين وسط العربية المحيطة بها.

وفي ١٣ تشرين الأول أعدنا كتابة العربية بالعربية. كانت المسودة الأولى قد هرّبت تعابير إنجليزية على حالها، مثل «الجلوس مع» عمل، أو علامة «تعيش» في مكان ما، فأسقطناها، وصارت بلاد ما بين النهرين «بلاد الرافدين». وفي ٢٨ تشرين الأول أرخينا النبرة أيضاً: بقيت الفصحى المبسّطة هي الأساس، وصارت عناوين الصفحة الرئيسية وهوامشها وأزرارها تتكلم بالعراقي.

وترقّم الصفحات العربية أجزاءها بالأرقام العربية المشرقية، ونجحت الاختبارات كلها. لكن الخط العربي المستعمل يرسم تلك الأرقام بأشكال غربية، فظلّت تُقرأ على الشاشة 01 و02 و03. ولم تنتبه لذلك إلا مراجعةٌ للتصميم في ١٣ تشرين الأول، لأن الاختبارات تقرأ النص لا البكسلات. فكان الحل خطّاً حجمه ٣ كيلوبايت لا يحمل إلا الأرقام المشرقية العشرة، ضبطنا مسافات أسطره على مقاييس الخط الأساسي Zain، حتى لا يتغيّر ارتفاع السطر إذا كان فيه رقم.

  • قسم «ما نعمله» في الصفحة الرئيسية في تشرين الأول ٢٠٢٦، بالإنجليزية، يُقرأ من اليسار إلى اليمين.
    ما نعمله في تشرين الأول ٢٠٢٦، بالإنجليزية.
  • القسم نفسه بالعربية، يُقرأ من اليمين إلى اليسار، بمقاسات حروفه الخاصة.
    القسم نفسه بالعربية.
export type Localized<T> = { en: T; ar: T };
// …
const ARABIC_INDIC = "٠١٢٣٤٥٦٧٨٩";

function localeDigits(digits: string, locale: Locale): string {
  return locale === "ar" ? digits.replace(/\d/g, (d) => ARABIC_INDIC[Number(d)]) : digits;
}
src/lib/i18n.tsلكل نص في الموقع نسخة إنجليزية ونسخة عربية، ولا يقبل النوع أن تغيب إحداهما. وتُكتب الأرقام في الصفحات العربية بالأرقام المشرقية.
الصنعة

١٠٨ مربعات تتبعثر وتعود

ليس في الواجهة إلا علامتنا. حين تُفتح الصفحة تطير مربعاتها الـ١٠٨ من تبعثرها وتصير برتقالية وهي تستقر. أشيروا إليها فتتبعثر من جديد.

نحسب من أين يبدأ كل مربع، وكم يدور، وكم ينتظر، مرةً واحدة حين نبني الموقع، من بذرة ثابتة، ونكتب ذلك في الصفحة نفسها. أما الحركة فتؤدّيها أوامر CSS عادية. فلا يرمش أول ما يراه الزائر، ولا ينتظر شيء وصول برنامج.

وخلف العلامة تومض أربع طبعات بالتناوب، كل واحدة للحظة: جدار من العلامات المسمارية، وشبكة من العلامة على طريقة فن البوب، وطباعة ريزوغراف نصفية، وحفر على الخشب. أردناها مبكرة، حتى لا تبدو مفاجأة مخبّأة لا يجدها إلا من يبحث عنها، فتأتي الأولى بعد ١٫٣ ثانية من جاهزية الصفحة. ويرسم الجدار المسماري العلامات الـ٣٢ من مجموعة علاماتنا، مقتفاةً من نقش هويتنا.

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

وعلى الهاتف المرفوع طولاً تأخذ العلامة والاسم أكثر عرض الشاشة، فكانت الطبعات المرسومة للشاشة العريضة تقع خلفهما. ومنذ تشرين الثاني نرسمها في الشريطين اللذين فوقهما وتحتهما.

ولا تُحمَّل الطبعات إلا حين لا يجد المتصفح ما يشغله، فلا تؤخّر أول ما يُرسم على الشاشة، ولا تُحسب من وزن الصفحة.

  • الواجهة وخلف العلامة أربع لوحات مسطّحة، برتقالية وصفراء وزرقاء ووردية، في كل منها النجمة مطبوعة بالنقاط.
    فن البوب.
  • الواجهة مع دائرة نصفية محبّبة ومربع برتقالي ونجمة كبيرة مرسومة بمربعات منزاحة.
    ريزوغراف.
  • الواجهة مع أشعة سوداء وبرتقالية محفورة من المركز، كطبعة حفر على الخشب.
    حفر على الخشب.
export function scatterSquares(mark: MarkData, opts = SCATTER): ScatteredSquare[] {
  // …
  const r = rng(opts.seed);
  return mark.items.map((item) => {
    const dx = cx + (r() * 2 - 1) * vw * opts.field[0] - item.cx;
    const dy = cy + (r() * 2 - 1) * vh * opts.field[1] - item.cy;
    const rot = Math.round((r() - 0.5) * opts.rot);
    const delay = Math.round(r() * opts.stagger);
    return { d: item.d, dx: Number(dx.toFixed(1)), dy: Number(dy.toFixed(1)), rot, delay };
  });
}
src/lib/hero/scatter.tsنحسب من بذرة ثابتة، حين نبني الموقع، من أين يبدأ كل مربع من مربعات العلامة، وكم يدور، وكم ينتظر.
الصنعة

ملفات بسيطة، وكود على حمية

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

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

ونضع كل سقف على طريقة واحدة: نقيس الصفحة حين تكتمل أول مرة، ونزيد على القياس عُشره، ونكتب التاريخ بجانب الرقم. وجاء القياس الأول، يوم ٨ تشرين الأول، ٢٩٢ كيلوبايت، ولو أبقينا سقفه البالغ ٣٢٣ لحمى الوزن نفسه الذي أردنا التخلص منه. وأثقل ما في الصفحة المكتبة التي تدقّق النموذج، بـ٩٤٫٥ كيلوبايت. فانتقلنا إلى نسختها الأصغر، وحجمها ٢١ كيلوبايت، ومرّرنا ٧٤ مدخلاً تجريبياً على النسختين لنتأكد أن كل جواب بقي كما هو، فنزلت الصفحة إلى ٢١٩ كيلوبايت. ومن هناك أعدنا ضبط السقف.

أما جولة الاستوديو، القطعة ثلاثية الأبعاد خلف «اكتشفوا عالمنا»، فكتبنا موجزها معرضاً للأعمال يُلعَب فيه، «يثبت صنعتنا دون أن يدّعيها». وهي تزن وحدها أكثر من الصفحة الرئيسية، فلها صفحتها الخاصة، ولا تحمّل الصفحة الرئيسية شيئاً منها. والفحص نفسه يُفشل الصفحة الرئيسية إن أشارت ولو إشارة إلى أحد ملفات الجولة.

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

// Set on 2026-10-09 after the hero's mark data moved into the lazy art chunk: measured 217.7 KB
// for /en/ and 218.8 KB for /ar/; the larger value times 1.1, rounded up, is 241.
// The limit before (243) was measured with the mark data in first-load JavaScript, 1.7 KB heavier,
// and the first limit (323) on the classic zod build, about 94.5 KB gzipped heavier again.
export const HOME_BUDGET_KB = 241;
scripts/check-budget.mjsسقف الصفحة الرئيسية، والقياس الذي وُضع منه، ولماذا تغيّر.
الصنعة

تفحصه الآلة، ثم نراجعه نحن

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

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

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

وطلبت المراجعات أيضاً شاشة أولى تقول ما نعمله وفيها زرّ. فأبقيناها شبه فارغة، فتلك الشاشة الهادئة هي القرار الذي تدور عليه هذه الصفحة كلها.

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

// The site is a static export with self-hosted fonts, so a page makes no request to any other
// host. Anything that does, including a form posting to a real endpoint once one is configured,
// is blocked before it leaves the machine and fails the test that made it.
const LOCAL_HOSTS = new Set(["localhost", "127.0.0.1"]);

export function isOffHost(url: URL): boolean {
  return (url.protocol === "http:" || url.protocol === "https:") && !LOCAL_HOSTS.has(url.hostname);
}
tests/e2e/fixtures.tsالحارس الذي يعمل داخله كل اختبار للمتصفح: يُمنع كل طلب إلى خادم آخر، ويفشل الاختبار الذي أرسله.

أين وصل، حتى الآن

يعمل الموقع بالإنجليزية والعربية، على كل عرض من الهاتف الصغير فما فوق. تحمل الصفحة الرئيسية الإنجليزية ١٩٥٫٨ كيلوبايت من جافاسكربت تحت سقفها البالغ ٢٤١، والعربية ١٩٦٫٨. ويمرّ كل تغيير على البوابة كاملة كما وصفناها أعلاه.

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

ويحمل الموقع في تشرين الثاني ٢٠٢٦ قصص أول ثلاثة عملاء لنا، ومعها ثلاث من قصصنا نحن: الهوية والجولة وهذه الصفحة.