- فيه نقطة ناس كتير بتقف عندها بعد ما تخلص شغل الـ Front:
أزاي أوصل الفرونت بالباك؟
وساعتها تبدأ اللخبطه بين الـ APIs والـ Tokens والـ Fetch والـ Errors… الخ.
فخلينا نمشيها سطر بسطر ونبسط الدنيا 👇
🎯 في الأول يعني إيه Integration أصلاً…؟
الـ Integration يعني إن الـ Frontend (Next.js) يبعت Request للـ Backend (Node / Laravel / Python… إلخ) والباك يرد عليه بـ Data أو Error.
يعني الفرونت بيبعت طلب للباك (Request) والباك بيرد عليه بالبيانات المطلوبة (Response).
الفرونت بيقول: “هاتلي المستخدمين”
والباك يرد: “اتفضل البيانات”
⚙️ طيب اي هي أنواع الـ Integration…؟
Internal APIs
دا لو الباك جوه مشروعك نفسه (يعني نفس الـ Repo).
// هتعمل API Routes في /app/api/…
// وبعد كدا تناديها كده من أي كومبوننت عادي:
وبتتفادى مشاكل الـ CORS غير إن التطوير بيكون أسهل وأسرع بكتير.
External APIs
دا لو الباك اند منفصل على سيرفر تاني:
وهنا بقى لازم تزبط إعدادات الـ CORS في الباك، وتبعت الـ Token صح، عشان أي Error يرجع من السيرفر تعرف تتعامل معاه
🧠 طيب Server ولا Client…؟
Server Component: لو الداتا عامة (زي Blog أو Products).
Client Component: لو فيها Interactivity أو Data شخصية (زي profile أو forms).
مثال عملي عشان الدنيا توضح اكتر
لو Server Component:
لو Client Component:
🔐 طيب هنتعامل مع الـ Auth والـ Sessions والـ Login إزاي بقى…؟
1️⃣ الـ JWT Tokens :
لو الباك بيرجعلك Token خليه في Cookie أو LocalStorage
// وابعت كل Request بالشكل دا:
2️⃣ الـ NextAuth.js :
اما لو بتستخدم NextAuth فـ هو بيهندل موضوع السيشن بدالك، انتا بس هتجيب اليوزر كده:
🗄️ طيب هنتعامل مع الـ Database إزاي…؟
- بص يا كبير لو الباك جوه المشروع نفسه فـ الموضوع بسيط هتستخدم Prisma أو Mongoose وتشتغل عالداتا دايركت من السيرفر، يعني API Route هي واحدة هتجيب الداتا وترد بيها وخلاص الموضوع انتهى
- إنما لو الباك خارجي (سيرفر منفصل) يبقى متدخلش أنت في قصة الـ DB خالص، هتسيب الباك هو اللي يتكلم مع الداتابيز ويرجعلك الـ JSON جاهز، وانت كل اللي عليك تجيب الداتا بـ Axios وتعرضها في الـ UI وبس كدا
📤 طيب هنرفع الملفات ونتعامل مع الـ File Upload إزاي…؟
مينفعش تبعت ملفات بـ JSON عادي لازم تستخدم FormData.
// يعني مثلاً لو عندك input بيرفع ملف كدا:
// ساعتها هتبعته كده:
ونفس الفكرة بقا لو بترفع على Cloudinary أو Supabase، بس بدل الـ /api/upload هتحط الـ endpoint بتاع السيرفر أو الخدمة اللي انت شغال عليها عادي.
🚨 طيب هنتعامل مع الـ Errors والـ Rate Limiting إزاي بقى…؟
أول حاجة متفتكرش إن الريكوست هيمشي دايما فل, لازم تبص على الـ Response وتشوف رجعلك إيه بالظبط:
كده هتمسك أي Error جاي من السيرفر وتعرضه لليوزر بدل ما الصفحة تقع فجأة
ممكن مثلا تعمل toast كده في الفرونت تقول فيها إن في مشكلة حصلت أو تطلب منه يحاول تاني…. وراجع الـ status code (زي 400 أو 500) علي طول عشان تفهم نوع الغلط وتتصرف على أساسه.
أما بالنسبة للـ Rate Limiting، فده مهم عشان تمنع السبام والـ abuse، يعني متخليش أي حد يضرب الـ API عندك بمية Request في الثانية.
عشان كدا استخدم تولز زي Upstash Redis أو RateLimiter.js في الباك تحدد مثلا إن كل يوزر ليه 100 طلب في الساعه… كده هتحمي السيرفر وتخلي الأداء ثابت حتى لو في ضغط
🔁 طب والـ Real-Time Integration بقى؟ هنعمله إزاي؟
- لو عندك حاجة محتاجة تحديث لحظي زي الـ Notifications أو الـ Chat أو الـ Live Dashboard،وساعتها لازم يكون في اتصال مباشر بين الفرونت والباك بدل الـ Request العادية… فالحل اي بقا..؟
هتستخدم الادوات دي 👇
- Pusher
- Ably
- Socket.io
دول هيخلوا الفرونت والباك يكلموا بعض لحظة بلحظة من غير ما تعمل refresh ولا re-fetch ولا الكلام دا
يعني مثلا في الشات: أول ما يوزر يبعث رسالة السيرفر يبعتها لباقي المستخدمين اللي فاتحين نفس الروم.
ولو في إشعارات مثلا: أول ما يحصل أكشن معين الباك يـpush نوتيفيكشن لكل الناس اللي المفروض يشوفوها.
ولو المشروع بسيط ومش عايز setup كبير Ably و Pusher بيوفروا SDKs سهلة تتظبط في Next.js في 5 دقائق حرفياً… أما لو عايز تحكم كامل يبقي استخدم Socket.io وشغل انتا الـ server.
🧱 طييب الـ Architecture هيترتب إزاي بقاا
عشان الـ Integration يبقى نضيف وسهل امشي على الـ Structure ده
// كل حاجة في مكانها:
- app/api ده مكان الـ Endpoints بتاعتك
- lib/ هنا هتحط الحاجات المشتركة اللي الكود كله ممكن يحتاجها، زي التعامل مع الـ DB، Auth، أو Rate Limit
- components/ دي الحاجات اللي المستخدم هيشوفها على الشاشة، الكومبوننتات بتاعت الـ UI
- utils/ دي أكواد المساعدة اللي ممكن تستخدمها في أي حتة في المشروع
- الاستركشر ده هيخلي المشروع Modular وسهل تضيف عليه أي Feature جديدة في أي SaaS أو Dashboard كبير.
🧰 الأدوات اللي عدت علينا واستخدمناها في البوست (روابطها هتلاقوها في الكومنتات)
- Auth NextAuth.js
- Requests Axios / Fetch
- Caching & Re-fetch SWR / React Query
- DB ORM Prisma / Mongoose
- Rate Limit & Caching Upstash Redis
- Uploads Cloudinary / Supabase
- Real-time Pusher / Ably
كده احنا غطينا كل الحاجات المهمة في الـ Integration:
- API Design
- Auth
- Error Handling
- Rate Limit
- Uploads
- Real-Time
- Structure
وبكده تبقى عرفت تعمل Integration في Next.js, ولو عندك سؤال أو تعليق، اسيبهولي في الكومنتات…



قسم التعليقات