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

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

فهم Server Components والجلب الآمن — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي
وقت الدراسة
12 دقيقة

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

مدخل إلى الدرس: فهم Server Components والجلب الآمن

فهم Server Components والجلب الآمن — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي

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

خريطة بصرية للمفهوم

مخطط توضيحي: صفحات الدعوة والواجهة الأمامية
flowchart LR
    A["طلبات المناسبة"]
    B["إدارة الدعوات"]
    C["إصدار QR"]
    D["التحقق من الدعوة"]
    E["متابعة الحضور"]
    A --> B
    B --> C
    C --> D
    D --> E

التسلسل: طلبات المناسبة ← إدارة الدعوات ← إصدار QR ← التحقق من الدعوة ← متابعة الحضور.

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

  • تمييز متى يجلب كل مكوّن على الخادم ومتى على العميل.
  • بناء صفحة ديناميكية تلتقط params من المسار.
  • تمرير الحد الأدنى من البيانات للعميل عند الحاجة.

مثال

// app/i/[token]/page.tsx — Server Component يقرأ params
import { notFound } from "next/navigation";
import { prisma } from "@/lib/prisma";
import { tokenHashOf, verifySignature } from "@/lib/tsign";
import { RsvpForm } from "./rsvp-form";

export default async function InvitationPage({
  params,
  searchParams,
}: {
  params: Promise<{ token: string }>;
  searchParams: Promise<{ sig?: string }>;
}) {
  const { token } = await params;
  const { sig } = await searchParams;

  if (!sig || !verifySignature(token, sig)) {
    notFound(); // 404 دون كشف وجود الضيف
  }

  const guest = await prisma.guest.findUnique({
    where: { tokenHash: tokenHashOf(token) },
    include: { event: true, rsvp: true },
  });
  if (!guest) return notFound();

  return (
    

دعوة {guest.name}

{guest.event.name}

); }

المخطط: متى جلب، ومتى انتقل للعميل؟

sequenceDiagram
    participant P as صفحة الدعوة (Server Component)
    participant V as verifySignature
    participant D as prisma (guest + event + rsvp)
    participant F as RsvpForm (use client)
    P->>P: params.token + sig من الرابط
    P->>V: التحقق من التوقيع
    V-->>P: 404 إن فشل
    P->>D: جلب البيانات
    D-->>P: بيانات كاملة
    P->>P: توليد HTML كامل (لا SQL ولا tokenHash)
    P->>F: guestId, eventId, initial فقط

قاعدة الإفشاء الأدنى

لا نمرر guest.tokenHash ولا أي حقل سري إلى مكوّن العميل. نمرر ما تعرضه الواجهة فقط.

تمرين تطبيقي: عدّل صفحة الدعوة لتقبل معرّف مناسبة ثابت كـ /i/demo بدل token، وراقب في Network ما يُرسل منها — لاحظ غياب secrets.

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

  • تعريف كل شيء 'use client' فيُرسل منطق الجلب للمتصفح.
  • تمرير الكائن guest كاملاً إلى Form مما يقرر tokenHash فيه.
  • عرض 404 بدون مجيئ status لضمان إخفاء الوجود.

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

Server Component
يتعنكب على الخادم: جلب + توليد HTML.
params
المقطع الديناميكي [token] من مسار الرابط.
الإفشاء الأدنى
إرسال الحقول اللازمة فقط للمكوّنات الهابطية.

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

اختبار سريع: اشرح بعبارتك معنى «فهم Server Components والجلب الآمن»، ثم بيّن أين ستستخدمه داخل نظام تسجيل حضور دعوات مناسبة عبر رمز 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

عرض الدروس كاملة تحقق من صفحة تعلم الدورة
درس نصي 1/36
أنت تشاهد
فهم Server Components والجلب الآمن