Vitrix — موقع تعريفي بـ Laravel

LaravelPHPBladeTailwind CSSVite· دقيقتان قراءة

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

المشكلة والقيود

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

النهج

  • متحكم واحد يربط إجراءً بكل صفحة (الرئيسية، من نحن، الخدمات، الاتصال) مع إجراء POST مخصص للنموذج — فيُقرأ جدول المسارات كخريطة للموقع.
  • قالب Blade مشترك يحمل الترويسة والتذييل ومسار الأصول، حتى لا يحتوي قالب الصفحة إلا ما يميّز تلك الصفحة.
  • تحقق في الخادم من كل حقل مُرسَل، مع جعل phone وcompany اختياريين صراحةً وسقف 2000 حرف لنص الرسالة — فالقواعد تعيش حيث لا يمكن تجاوزها بتعطيل جافاسكريبت.
  • Vite لتجميع الأصول، ما يجعل بناء CSS وJS مطابقًا لأي مشروع Laravel حديث بدل وسوم سكربت تُدار يدويًا.

المفاضلات

Decision

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

Decision

قواعد التحقق داخل المتحكم بدل صنف FormRequest: مع نموذج واحد، فصلها يضيف ملفًا دون أن يضيف وضوحًا. ومع ثلاثة نماذج كنت سأخرجها — فالعتبة هي التكرار لا المبدأ.

النتائج

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

ما كنت سأفعله بشكل مختلف

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