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

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

aliyosef.online

الاستوديو

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

البوابة

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

مصادر

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

النشرة

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

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

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

Concetto Labs

إعادة بناء بوّابة شركة هندسة برمجيّات في الهند. محتوى يقوده Sanity، واجهة Next.js على Vercel، استجابة أسرع للنماذج، وعرض أنظف لدراسات الحالة.

الدورمهندس Full-stack
السنة2024
التقنياتNext.js, MongoDB, Sanity.io, Vercel
مباشرconcettolabs.com↗
نظرة

عن المشروع.

إعادة بناء كاملة لبوّابة استوديو هندسة برمجيّات في الهند بعدما تخطّى نطاقُه نظامَ WordPress القديم. الموقع الجديد يعمل على Next.js مع Sanity طبقةَ محتوى، وينشر على Vercel بمعاينات لحظيّة. أعدت بناء صفحات دراسات الحالة وصفحات الخدمات وخطّ نماذج الاستفسار لتصل إلى فريق المبيعات نظيفة دون نسخ يدويّ. الهدف أن يقرأ المعرض بالحدّة نفسها التي يتمتّع بها العمل: دقّة، تقنيّة، بلا زخرفة.

النتيجة

ما الذي تغيّر.

4 weeks

من البدء إلى الإطلاق

0 regressions

تراجع بصري في الإنتاج

التحدّي

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

استوديو هندسة هنديّ تجاوز بوّابته القديمة على WordPress — تجربة تحرير بطيئة، دراسات حالة منسوخة من spreadsheets، نموذج اتّصال يهبط في صندوق لا يقرأه أحد.

المقاربة

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

إعادة بناء كاملة على Next.js 14 مع Sanity كطبقة محتوى، نُشرت على Vercel مع معاينات فوريّة. أعدت كتابة تخطيط دراسات الحالة، صفحات الخدمات، وخطّ نموذج الاتّصال الذي يدفع إلى أدوات المبيعات دون نسخ يدويّ.

النتيجة

ما الذي أصبح.

تدفّق تحريريّ أسرع، دراسات حالة أنظف، فريق المبيعات يحصل على تسليم مهيكل في CRM الموجود — لا رحلة spreadsheet بعد الآن.

القطاعخدمات هندسيّة · B2B
النوعإعادة بناء بوّابة مؤسّسيّة مع CMS headless
المدّة4 أشهر · v1
الفريقمنفرد · full-stack · مع فريق التحرير الداخليّ
المُلكيّة

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

منفرد · 100٪ ملكيّة هندسة. زوّد العميل النصّ والاتّجاه؛ امتلكت مخطّط Sanity، واجهة Next.js، توصيل خطّ الاتّصالات، ونشر Vercel. صُمّم مخطّط Sanity ليتمكّن كتّابهم غير التقنيّين من نشر دراسات حالة في 30 دقيقة دون تدخّل هندسيّ.

  • 01

    مصمّم مخطّط (Sanity)

    نمذجة دراسات الحالة، الخدمات، الفريق، الشهادات، وحمولات نموذج الاتّصال بطريقة تتوسّع مع إضافة الوكالة لقطاعات جديدة. Portable Text للنصوص الغنيّة؛ مراجع مهيكلة لكدسات التقنيّة.

  • 02

    مهندس فرونت-إند

    Next.js 14 App Router، ISR لواجهات المحتوى، تصميم متجاوب كامل، أساس وصول (WCAG AA على القوالب الرئيسيّة).

  • 03

    مهندس خطّ الاتّصالات

    إرسالات النموذج تدفع إلى CRM الوكالة عبر webhook + مفتاح idempotency؛ يرى فريق المبيعات حمولة مهيكلة (نوع المشروع، الميزانيّة، الجدول) دون إدخال يدويّ.

  • 04

    DevOps / نشر

    تكاملات Vercel + Sanity للمعاينة فيرى المحرّرون المسوّدات حيّة قبل النشر. نطاق مخصّص، كاش حافّة، لقطات يوميّة لمحتوى Sanity.

في الإنتاج

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

  • <200msTTFB · p75كاش حافّة Vercel + ISR Next.js. مقاس من حافّات أمريكا + أوروبا + الهند.
  • ~10×زمن النشر التحريريّتقديريّ — ملاحظات الطاقم. Sanity Portable Text vs. تدفّق Gutenberg السابق.
  • 100/100نتيجة Lighthouse SEOعلى قوالب دراسات الحالة + الخدمات. تحقّق بعد الإطلاق.
  • صفرإرسالات اتّصال مفقودةwebhook idempotent + طابور إعادة محاولة استبدل نموذج «mailto:» السابق.
  • لا قفلنموذج محتوى محمولتصدير Sanity هو JSON — الوكالة تمتلك البيانات ويمكنها الانتقال من Sanity خلال أيّام لو لزم.
لماذا كانت هذه المهمّة صعبة

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

وكالة خدمات تعيش أو تموت على صفحة محفظتها. لو بدت دراسات الحالة عامّة، يتعطّل خطّ المبيعات. تجربة تحرير الموقع القديم كانت موجعة لدرجة أنّ دراسات الحالة كانت تُنشَر بعد أشهر من شحن المشروع — وعندها يكون المهندس الذي بناه قد انتقل وصحّة الكتابة 70٪. المطلوب: تدفّق نشر يستغرق 30 دقيقة لدراسة حالة لا 3 ساعات، وتخطيط دراسة حالة يشير إلى «نحن نهندس أنظمة حقيقيّة»، لا «لدينا قالب صور stock».

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

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

  • 01يجب أن يكون تدفّق التحرير أسرع 10 مرّات من تدفّق WordPress القديم وإلّا لن يتبنّاه الفريق. Sanity Portable Text + كتل مخصّصة كانا الرهان.
  • 02تخطيط دراسة الحالة يجب أن ينقل عمقًا هندسيًّا دون أن يصبح جدار نصّ. تطلّب قالبًا مرنًا قائمًا على الكتل مع دعم لشيفرات + تضمين مخطّطات.
  • 03حمولة نموذج الاتّصال تحتاج التوجيه إلى CRM الوكالة (لا قاعدة جديدة) مع idempotency فلا ينشئ webhook متذبذب leads مكرّرة.
  • 04ثنائيّ (إنجليزيّ + هنديّ) أُجِّل إلى v2 — المخطّط يستوعبه، لكنّ v1 إنجليزيّ فقط.
  • 05معاينة-على-مسوّدة للمحرّرين: أيّ تغيير في Sanity يجب أن يكون مرئيًّا على URL مسوّدة قبل النشر، دون تدخّل هندسيّ.
مشاكل صعبة محلولة

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

01

مخطّط Sanity يتوسّع دون أن يصبح spaghetti

نمذجة 8 أنواع محتوى أساسيّة (caseStudy، service، person، testimonial، post، page، technology، vertical) بمراجع صارمة — لا نسخ مدمجة. إضافة قطاع جديد تضيف وثيقة واحدة، لا هجرة مخطّط واحدة.

02

webhook خطّ اتّصالات idempotent

POST النموذج يولّد UUID في الجانب العميل، يخزّنه الخادم قبل الدفع إلى CRM، ردّ webhook الـCRM يحدّد النجاح. إعادة محاولة على شبكة متذبذبة لا تنشئ أبدًا lead مكرّر في الـCRM.

03

معاينات مسوّدة دون كشف بيانات مسوّدة

رموز معاينة Sanity محدودة بجلسة محرّر؛ URLs المسوّدة موقّعة وتنتهي خلال 7 أيّام. زواحف عامّة لا ترى المسوّدات أبدًا.

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

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

01 — الحافّة

طبقة الحافّة

Vercel EdgeCDN + ISRكاش حافّة عالميّ؛ يعيد التحقّق على webhook Sanity
02 — التطبيق

طبقة التطبيق

Next.js 14App Router · RSC · ISRثابت افتراضيًّا مع إعادة تحقّق عند الطلب
Sanity Studioمدمج · مسار /studioواجهة المحرّر تعيش على نفس نطاق الموقع العلنيّ
webhook نموذجدالّة حافّةدفع idempotent إلى CRM؛ إعادة محاولة عند الفشل
03 — البيانات

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

Sanity Content LakeCMS مستضافمصدر الحقيقة الواحد؛ تصدير JSON متاح
لقطة يوميّةGitHub Actions · S3نسخة احتياطيّة خارج المنصّة لكلّ المحتوى + الأصول
لماذا هذه التقنيّات

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

Next.js 14 + Vercel

  • ISR + إعادة تحقّق عند الطلب تتيح للمحرّرين النشر دون إعادة بناء الموقع كاملاً — التغيير يصير حيًّا خلال ثوانٍ.
  • بيئة تشغيل الحافّة + RSC تعطي صفحات دراسات الحالة أداءً شبه ثابت مع شخصنة قاعدة بيانات كاملة عند الحاجة.
  • نشرات معاينة Vercel تجعل كلّ PR قابلاً للنقر دون إعداد يدويّ.

Sanity عوضًا عن Contentful/Strapi

  • Portable Text أنظف صيغة نصّ غنيّ استخدمتها — JSON أصليّ، أنواع كتل مخصّصة من الدرجة الأولى، تجربة محرّر سريعة.
  • Studio مدمج (نفس النطاق، لا دخول منفصل) يقطع احتكاك المحرّر هائلاً.
  • الأسعار تتوسّع مع استعلامات API لا مع المقاعد — يناسب وكالة خدمات يقرأ فيها كثير من الناس المحتوى أحيانًا.

webhooks idempotent عوضًا عن كتابة DB مباشرة

  • الـCRM هو مصدر حقيقة الـleads. الكتابة إلى DB جانبيّ والمزامنة لاحقًا تنشئ حقيقتين تنحرفان.
  • مفتاح idempotency يولّد في الجانب العميل يضمن أمان إعادة المحاولة.
الدروس المستفادة

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

  • السرعة التحريريّة تحدّد سرعة المحتوى. لو استغرق النشر 3 ساعات، ستتأخّر دراسات الحالة 6 أشهر. لو استغرق 30 دقيقة، تُنشَر في الأسبوع الذي يشحن فيه المشروع.
  • Portable Text يستحقّ مكانه. النصّ الغنيّ JSON-أصليّ يعطيك كلّ ما يفتقده Markdown (كتل مخصّصة، مراجع، أجزاء جزئيّة) دون أن يقفلك.
  • idempotency لـwebhook أرخص تأمين يمكنك شراؤه. أضفه قبل أن تحتاجه.
صور

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

تابع القراءة
الحالة السابقةكرفان للشحنالحالة التاليةCyberV
لنبنِ معًا

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

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

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