دورة تطوير نظام إدارة الأعراس والمناسبات ودعوات QR عمليًا

لوحة الإحصائيات الحية

لوحة الإحصائيات الحية — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي
وقت الدراسة
12 دقيقة

المسار: تطوير نظام إدارة الأعراس ودعوات QR الوحدة: صفحات الدعوة والواجهة الأمامية

مدخل إلى الدرس: لوحة الإحصائيات الحية

لوحة الإحصائيات الحية — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي

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

أهداف هذا الدرس

  • عدّ الكل: دعوات، ردود، حضور بنبض واحد.
  • بناء بطاقة نسب إنجاز لكل صنف.
  • أتمتة التحديث عبر استرجاع دوري في مكوّن client.

مثال

// app/admin/page.tsx (Server Component للعدد الأولي)
export default async function DashboardPage() {
  const event = await prisma.event.findUnique({
    where: { slug: "wedding-2026" },
    include: { _count: { select: { guests: true, rsvps: true, checkIns: true } } },
  });

  const progress = event
    ? Math.round((event._count.checkIns / Math.max(event._count.guests, 1)) * 100)
    : 0;

  return ;
}

// StatsBoard.tsx  ("use client")
"use client";
export function StatsBoard({ initial }: { initial: any }) {
  const [data, setData] = useState(initial);

  useEffect(() => {
    const t = setInterval(async () => {
      const res = await fetch("/api/admin/stats");
      if (res.ok) setData((await res.json()).data);
    }, 15000);
    return () => clearInterval(t);
  }, []);

  return () /* JSX: ثلاث بطاقات (دعوات، ردود، حضور) + شريط تقدم */;
}

المخطط: دورة لوحة الإحصائيات

flowchart LR
    CARD["بطاقة أولى (Server)"]
    CARD <-->|"كل 15 ثانية fetch /api/admin/stats"| API["prisma._count
guests · rsvps · checkIns"] API --> RATIO["بطاقة نسب: حاضرون ÷ مدعوون %"]

لماذا 15 ثانية؟

توازن بين حيوية العرض وضغط القاعدة. التحديث عبر polling بسيط؛ ومختص عند الحجم الضخم نستبدله بـ Server-Sent Events أو WebSocket، لكنه مثال جيد هنا.

نمط جيد للتطبيق

البنية الهجينة (Server أولاً ثم Client دورياً) تجعل أول عرض سريعاً دون فشل فارغ، ولا يضطر العميل إلا الانتظار لإعادة التعبئة كل 15 ثانية.

تمرين تطبيقي: أضف بطاقة رابعة «معدل الرد» = المقبولون ÷ الدعوات، واجعل شريط العتاد ملوناً حسب النسبة (أحمر لـ <30%).

أخطاء شائعة يجب تفاديها

  • جلب الإحصائيات في كل ثانية — حمل لا داعي.
  • قسمة على صفر عندما لا يوجد ضيوف (استخدم Math.max).
  • تحديث stale بعد مغادرة المستخدم —نظّف بشبكة intervals.

معجم مصطلحات الدرس

polling
استرجاع دوري لبيانات من الخادم بفاصل زمني.
_count
عدّ العلاقات دون سحب صفوفها.
هيدرة أولى
لقطة Server للمرة الأولى ثم يتابع client.

مراجعة وتمرين تثبيت المهارة

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

تحدٍّ إضافي: غيّر شرطًا واحدًا في التطبيق، وتوقع النتيجة، ثم نفّذ الاختبار وفسّر الاختلاف.

دروس نصية

#1

نظرة عامة على الدورة والمخرجات

#2

مقدمة إلى Next.js وأسباب اختياره

#3

أساسيات schema.prisma والنماذج

#4

مقدمة Route Handlers وبنية الاستجابة

#5

فهم Server Components والجلب الآمن

#6

تصميم الرمز Secured والتوقيع HMAC

#7

بناء الإنتاج وتجنّب أخطاء الحالة المربكة

#8

تحليل المتطلبات وتحديد الكيانات

#9

إنشاء مشروع Next.js وتجربته

#10

نموذج المناسبة Event بالعلاقات

#11

واجهة إنشاء المناسبة POST /api/events

#12

تصميم صفحة الدعوة الإلكترونية

#13

توليد صورة QR من قاعدة الدعوة

#14

نشر المشروع على Vercel

#15

تصميم قاعدة البيانات والعلاقات

#16

تجريب PostgreSQL محلياً وإنشاء قاعدة الداتا

#17

نموذج المدعو Guest مع الرمز الموقّع

#18

واجهات الضيوف الإضافة والقائمة

#19

نموذج الرد RSVP التفاعلي

#20

تجربة المسح في بوابة الحفل

#21

قاعدة بيانات إنتاج مُدارة وأمانها

#22

تدفق الدعوة وقراءة QR من التوليد إلى الحضور

#23

تثبيت Prisma والاتصال بالقاعدة

#24

نموذج الرد Rsvp ومنع التكرار

#25

واجهة تسجيل الحضور POST /api/checkin

#26

صفحة قائمة الضيوف والفرز

#27

واجهة تتفهم حالة الحضور والحصر

#28

إدارة المتغيرات السرية بيئة وواجهة

#29

سيناريو المشروع وقواعد العمل

#30

بنية مجلدات المشروع ومسارات الصفحات

#31

الاستعلام والجلب مع العلاقات

#32

التحقق من المدخلات ومعالجة الأخطاء

#33

لوحة الإحصائيات الحية

#34

تأمين الروابط والهجمات الشائعة

#35

قائمة الفحص النهائي قبل الإطلاق

#36

الترحيلات migrations والبذور seed

عرض الدروس كاملة تحقق من صفحة تعلم الدورة
درس نصي 5/36
أنت تشاهد
لوحة الإحصائيات الحية