هندسة Frontend وبرمجة
كيف أبني بنية Frontend قابلة للتوسع
منهج عملي لتنظيم مشاريع الواجهات عبر ملكية الميزات وحدود البيانات المكتوبة بالأنواع وحالات التحميل والخطأ وبنية تسهّل التطوير والإطلاق.
البنية تبدأ من حدود المنتج
المشروع القابل للتوسع لا يبدأ بإضافة مجلدات أكثر، بل بفهم الأجزاء التي تتغير معاً ومن يملك كل مسار وأين تدخل البيانات إلى الواجهة وأين تخرج منها. قبل اختيار شكل المجلدات أحدد مسارات المستخدم والأنماط البصرية المشتركة وحدود الصلاحيات وحالات الفشل.
بهذا تبقى البنية مرتبطة بسلوك المنتج الحقيقي. نظام مشفى وشاشة لإدارة قضية ومساحة تحليل نص بالذكاء الاصطناعي قد تستخدم React كلها، لكنها لا تحمل المسؤوليات نفسها ولا يجب تنظيمها بالطريقة نفسها.
- تنظيم الكود حول ميزات المنتج وليس حول أنواع الملفات فقط.
- إبقاء مكونات الواجهة المشتركة صغيرة وثابتة وعامة فعلاً.
- اعتبار التحميل والفراغ والخطأ والنجاح والصلاحيات جزءاً من متطلبات المنتج.
ملكية واضحة لكل ميزة
تحتفظ كل ميزة بالمكونات والـHooks والتحقق والأنواع والاستعلامات والتعديلات والحالة الخاصة بمسارها. هذا يقلل عدد الملفات غير المرتبطة التي يحتاج المطور إلى قراءتها قبل أي تعديل ويجعل مراجعة Pull Request أوضح.
لا أنقل الكود إلى مساحة مشتركة لمجرد أنه استُخدم مرتين. أبقي السلوك قريباً من الميزة أولاً، ثم أستخرجه عندما يثبت الاستخدام المتكرر أن العقد المشترك مستقر فعلاً.
حدود Typed لربط الـAPI
لا يجب أن تعتمد الشاشات مباشرة على استجابات باكند غير موحدة. أستخدم API client مشتركاً وأنواعاً واضحة للطلبات والاستجابات ودوال لتوحيد البيانات والأخطاء، وبذلك تحصل الواجهة على حد ثابت حتى لو تغير Endpoint أو اختلف شكل البيانات بين خدمتين.
هذه الحدود تحسن التواصل مع فريق الباكند أيضاً؛ يصبح النقاش حول عقد محدد: حقول مطلوبة وقيم nullable وبيانات Pagination وأخطاء تحقق ونتيجة كل Mutation.
- فصل Transport Models عن View Models عندما يخدم كل شكل غرضاً مختلفاً.
- توحيد الأخطاء قبل وصولها إلى المكونات.
- تمثيل البحث والفلاتر والصفحات بعقد صريح.
حالات العمليات غير المتزامنة جزء من الواجهة
تقضي التطبيقات الفعلية وقتاً طويلاً بين الحالات المثالية: البيانات قيد التحميل أو لا توجد نتائج أو فشل الحفظ أو انتهت الجلسة أو لا يملك المستخدم الصلاحية. هذه ليست تفاصيل ثانوية، بل جزء من التجربة الأساسية.
أحدد سلوك التحميل والفراغ والبيانات الجزئية والخطأ والنجاح وإعادة المحاولة أثناء تصميم الميزة، حتى لا تخترع كل شاشة نمطاً مختلفاً.
جودة الإصدار جزء من الهندسة
حتى البنية النظيفة تفشل إذا تجاهل الإصدار التجاوب والوصول والأداء والأجهزة الحقيقية. لذلك أجعل هذه المراجعات ضمن تعريف اكتمال الميزة قبل وصولها إلى الإنتاج.
الهدف ليس بنية مثالية لا تتغير، بل نظام تكون تكلفة التغيير فيه مفهومة والملكية واضحة ويستطيع المطور التالي إكماله من دون إعادة البناء من الصفر.
أمثلة من المشاريع
دراسات حالة مرتبطة بالقرارات الموجودة في المقال.
منصة عقارية
Hompper
منصة عقارية ثنائية اللغة تساعد المشترين والمستأجرين في سوريا على اكتشاف العقارات والوكلاء والتصفح عبر الخريطة والتواصل المباشر ضمن تجربة متجاوبة واحدة.
عرض دراسة الحالةمنصة تعليم طبي
IASS
أكاديمية رقمية ثنائية اللغة للطب التجميلي تجمع الكورسات والكتب الطبية والمقالات ومحتوى المؤسسة وكتالوجات التعلم المرتبطة بالـAPI ضمن منصة منظمة.
عرض دراسة الحالةمنتج تعليمي بالذكاء الاصطناعي · عمل مستقل
AI Detektor
منتج سويدي لاكتشاف النصوص المولدة بالذكاء الاصطناعي للمدارس، مبني حول مساحة تحليل مركزة ودخول موثّق وإشارات مخاطر واضحة وأدلة تساعد المعلم في المراجعة.
عرض دراسة الحالةمقالات أخرى