انتقل للمحتوى
علي هيثم·TECH·يردّ خلال أقل من ساعة
  • الرئيسيةابدأ من هنا
  • الأعمالدراسات حالة، مشاريع
  • الخدماتما الذي سأبنيه لك
  • المدونةمقالات، سلاسل
  • التدريبدورات، مختبرات، دورات
  • عنّيالمهندس وراء هذا الموقع
تسجيل الدخولابدأ مشروع
علي هيثم · TECH
  • الرئيسية↗
  • الأعمال↗
  • الخدمات↗
  • المدونة↗
  • التدريب↗
  • عنّي↗
تسجيل الدخولابدأ مشروع
متاح
علي هيثم·TECH

استوديو هندسي. دمشق، GMT+3.

aliyosef.online

الاستوديو

  • الأعمال
  • المدونة
  • التدريب
  • عنّي
  • تواصل معي

البوابة

  • تسجيل الدخول
  • فتح تذكرة دعم
  • متابعة مشروع
  • حسابي

مصادر

  • الوثائق
  • حالة الأنظمة
  • سجلّ التغييرات
  • حزمة العلامة
  • الخصوصية
  • الشروط

النشرة

ملاحظات تقنية وأخبار، أسبوعياً. بدون حشو.

مجاني. إلغاء الاشتراك متى ما حبيت.

تابعني على
© 2026 علي هيثم يوسف. جميع الحقوق محفوظة.مبنيّ يدويًا بـ React 19.آخر نشر · 2026-05-08كل الأنظمة تعمل
مشروع 062024مهندس Full-stack

كرفان للشحن

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

الدورمهندس Full-stack
السنة2024
التقنياتLaravel, Tailwind, Alpine.js
مباشرcaravan-cargo.co↗
نظرة

عن المشروع.

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

التحدّي

ما الذي وجدناه.

شركة شحن دوليّة احتاجت موقعًا مؤسّسيًّا يحمل العمليّة الكاملة: خدمات، فروع، تدفّق طلب عرض سعر حقيقيّ — ويقبل تحرير ar/en في لوحة واحدة.

المقاربة

ما الذي فعلناه.

CMS Laravel بحقول ar/en مزدوجة، فرونت Tailwind، نموذج عرض سعر يدفع مباشرة إلى صندوق المبيعات بحقول مهيكلة (المنشأ، الوجهة، الوزن، النوع). محدّد فروع مع تكامل خريطة.

النتيجة

ما الذي أصبح.

محتوى ثنائيّ تحت لوحة واحدة. نموذج lead يوجَّه إلى المبيعات دون وسيط spreadsheet.

القطاعشحن دوليّ · لوجستيّات
النوعموقع مؤسّسيّ + خطّ عرض أسعار + محدّد فروع
المدّة3 أشهر · v1
الفريقمنفرد · full-stack
المُلكيّة

دوري الفعليّ في هذا المشروع.

منفرد · من الألف إلى الياء. باك-إند Laravel، فرونت Tailwind، خريطة محدّد الفروع، خطّ نموذج عرض السعر. زوّد العميل المحتوى وبيانات الفروع؛ كلّ شيء آخر لي.

  • 01

    مهندس full-stack

    Laravel + Blade + Alpine. نموذج محتوى ثنائيّ مع Spatie/translatable.

  • 02

    مصمّم خطّ عرض الأسعار

    نموذج عرض سعر مهيكل (منشأ ← وجهة ← وزن ← نوع خدمة) يوجَّه إلى صندوق المبيعات بحقول معالَجة، لا نصّ حرّ.

  • 03

    مهندس خريطة + محدّد فروع

    محدّد فروع بـOpenStreetMap (لا فاتورة Google Maps)، بحث واعٍ بـKSA.

في الإنتاج

الأرقام التي تهمّ.

  • <1.5sتحميل 4Gالصفحات الرئيسيّة + الخدمات + المحدّد. مختبر على موبايل سعوديّ.
  • +12فرع على المحدّدكلّ منها بساعات، تواصل، خدمات، دبّوس خريطة.
  • ثنائيّلوحة واحدةالمحرّرون يكتبون ar/en في استمارة واحدة، لا منشورات متوازية.
  • 0تسليم lead يدويّنموذج عرض السعر يدفع حمولة مهيكلة مباشرة إلى صندوق المبيعات.
لماذا كانت هذه المهمّة صعبة

ما الذي كان معطّلاً فعلاً.

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

التحدّيات الهندسيّة

المساحة الصعبة من المشروع.

  • 01نموذج عرض السعر يجب أن يلتقط 8+ حقول مهيكلة دون أن يشعر كإقرار ضريبيّ.
  • 02محدّد فروع يحمل بسرعة على الموبايل دون دفع رسوم Google Maps API لكلّ زيارة.
  • 03تدفّق تحرير ثنائيّ لا ينشئ مجموعتين من الفروع تنحرفان.
  • 04توجيه صندوق المبيعات يحترم أيّ فرع أقرب للمنشأ (شرق KSA مقابل غرب).
مشاكل صعبة محلولة

انتصارات هندسيّة تستحقّ التسمية.

01

نسبة إتمام نموذج عرض السعر

كشف تدريجيّ: 3 حقول أوّلًا (منشأ، وجهة، وزن)، المزيد يُكشَف مع ملء السابقة. نسبة الإتمام بقيت فوق 40٪ في المراجعة المبكرة.

02

OpenStreetMap عوضًا عن Google

Leaflet + بلاطات OSM. يوفّر 500-1000$ شهريًّا عند الحجم. ترميز جغرافيّ عبر Nominatim مع كاش Redis لاحترام حدّ معدّلهم.

البنية المعماريّة

كيف يتشابك النظام.

01 — الحافّة

طبقة الحافّة

CloudflareCDN · DNSحافّات KSA + الإمارات
02 — التطبيق

طبقة التطبيق

Laravel 11PHP 8.3 · Blade · AlpineCMS + خطّ عرض الأسعار + المحدّد
Leaflet + OSMخريطة جانب-عميلمحدّد الفروع؛ ترميز جغرافيّ مكاش عبر بروكسي جانب-خادم
03 — البيانات

طبقة البيانات

MySQL 8أعمدة JSON ثنائيّةالفروع، الخدمات، كتل المحتوى
Redis 7كاش + ترميز جغرافيّكاش استجابة Nominatim (TTL 24 ساعة)
لماذا هذه التقنيّات

القرارات وراء كلّ اختيار.

Laravel + Spatie/translatable

  • واجهة تحرير ثنائيّة واحدة في Filament. الفروع، الخدمات، الصفحات — كلّها تشارك نفس نمط الترجمة.
  • منطق توجيه lead (أقرب فرع حسب منطقة المنشأ) يجلس طبيعيًّا في فئة خدمة، لا في JavaScript على النموذج.

OpenStreetMap عوضًا عن Google Maps

  • لا أسعار لكلّ استدعاء يعني لا فاتورة مفاجئة لو شاع المحدّد.
  • البلاطات تبدو صادقة، لا مصقولة فوق الحدّ — يناسب شركة شحن تشحن أشياء مادّيّة فعليّة.
الدروس المستفادة

ما علّمنا إيّاه هذا البناء.

  • النماذج المهيكلة تتفوّق على نماذج الاتّصال نصّيّة حرّة بنسبة عاشرة في التحويل-إلى-عرض-سعر.
  • OSM هو الافتراض الصحيح لأيّ خريطة عمل لا تحتاج تنقّلاً انعطافًا. حوّل إلى Google حين تحتاج بياناتهم — لا حين تفترض أنّك تحتاجها.
صور

من داخل المشروع.

تابع القراءة
الحالة السابقةبالوماالحالة التاليةConcetto Labs
لنبنِ معًا

تريد شيئًا مماثلًا؟

أتلقّى عددًا محدودًا من الالتزامات كلّ ربع. حدّثني عمّا تفكّر فيه.

لنبدأ الحديث→