ملخص سريع

لقد نشرنا 30+ مشروعًا بدون واجهة رسومية في 18 شهرًا في Social Animal. حوالي ثلث حالاتنا الأخيرة هي عمل إنقاذ من البناء بقيادة المصممين الذي شحنوا النماذج الأولية لكن انهار في الإنتاج. دليل مايكل نيرفيجنا "Claude Code for Designers" على Substack جيد بصراحة للنماذج الأولية -- لكنه يتوقف قبل Row Level Security، وتحديث رموز المصادقة، واختيارات تجريد قاعدة البيانات، وإرجاع النشر، وسياسة الأمان للمحتوى، والمصادقة الإدارية. تغطي هذه المقالة تلك الفجوات. إذا كنت تشحن إلى الإنتاج، فأنت بحاجة إليها.

جدول المحتويات

ما هو Claude Code ولماذا يستخدمه المصممون؟

Claude Code هي أداة البرمجة القائمة على الطرفية من Anthropic التي تم إطلاقها في أوائل عام 2025. يتم تشغيلها كـ @anthropic-ai/claude-code وتتطلب Claude Pro ($20/شهر) أو Team ($30/مقعد/شهر) مع وصول API. تقوم بكتابة وتحرير وتصحيح الأكواد من خلال لغة طبيعية في الطرفية الخاصة بك.

يستخدمها المصممون لأنها تسد الفجوة بين "لقد قمت بتصميم هذا في Figma" و "هذا تطبيق Next.js يعمل بالفعل." على عكس v0 أو Bolt، يعمل Claude Code على نظام الملفات الفعلي لديك. يقرأ هيكل مشروعك، ويعدل الملفات، ويشغل خادم التطوير الخاص بك، ويكرر مخرجات الأخطاء. بالنسبة لشخص يفهم التسلسل الهرمي للمكون لكن لا يريد حفظ generics TypeScript، هذا مفيد بصراحة.

يضع Nervegna في الموضع أداة تسمح للمصممين بـ "التفكير في الأنظمة" بدلاً من بناء الجملة. نحن نتفق. حيث نختلف هو ما يحدث بعد أن يكون أول npm run dev ناجحًا.

ما الذي يحصل عليه دليل نيرفيجنا بشكل صحيح؟

Nervegna يصيب ثلاثة أشياء تفتقدها معظم البرامج التعليمية لأدوات البرمجة الذكية الاصطناعية.

أولاً: سياق المشروع. يوصي بإطعام Claude Code ملف CLAUDE.md مع اتفاقيات المشروع والمكدس التقني ورموز التصميم. رأينا Claude Code ينشئ أدوات Tailwind مقابل مشروع يستخدم CSS Modules لأن أحدًا لم يخبره بالاتفاقيات. إنشاء السياق قبل كتابة الكود هو النهج الصحيح.

ثانيًا: الحلقة التكرارية. موجه، استعرض الإخراج، صحح المسار، كرر. لا يتعامل مع Claude Code كزر "صف وشحن". يتعامل معها كشريك متزامن يحتاج إلى إشراف. هذا هو النموذج الذهني الصحيح.

ثالثًا: البدء صغيرًا. بناء مكون واحد أو صفحة واحدة قبل محاولة قالب التطبيق الكامل. رأينا المصممين يدفعون "بناء لي لوحة تحكم SaaS كاملة مع المصادقة والفواتير والإدارة" في رسالة واحدة. النتيجة دائمًا فوضى. النهج المتزايد لـ Nervegna يتجنب هذا.

حيث يخدم دليل Nervegna المصممين جيدًا هو مرحلة 0 إلى نموذج أولي. المشكلة هي أن النماذج الأولية تصبح كود الإنتاج، وهذا حيث تهم الفجوات.

أين يتوقف الدليل قبل الأوان؟

يوفر دليل Nervegna لمرحلة النماذج الأولية. لا يعالج الاهتمامات التي تصبح عاجلة عندما تقوم بتوصيل قاعدة بيانات حقيقية وإنتاج حقيقي وهياكل نشر حقيقية.

ما هو مفقود:

  1. Row Level Security (RLS) -- مشاريع Supabase التي تم إنشاؤها بواسطة Claude Code لا تحتوي تقريبًا على سياسات RLS الصحيحة
  2. مصادقة الانتقال -- الفجوة بين مصادقة Supabase في التطوير وتدفقات الإنتاج مع تحديث الرموز وإدارة الجلسات ومعالجة إعادة التوجيه
  3. قرارات تجريد قاعدة البيانات -- متى يتم استخدام عميل Supabase مباشرة مقابل Prisma أو Drizzle ORM
  4. استراتيجية إرجاع النشر -- ما يحدث عندما يكسر التزام Claude Code الإنتاج
  5. سياسة الأمان للمحتوى -- خاصة لـ Next.js Image مع الأصول المحددة بالوكالة/الخارجية
  6. المصادقة الإدارية -- عندما تحتاج إلى وصول قائم على الأدوار يتجاوز المصادقة البسيطة للمستخدم

دعونا نأخذ كل واحدة.

مشاكل Row Level Security التي لن يكتشفها Claude

Row Level Security هي آلية Supabase لضمان أن استعلامات قاعدة البيانات تعيد فقط الصفوف التي يُسمح للمستخدم الذي يطلب بها بمعاينتها. عند إنشاء جدول في Supabase، يتم تعطيل RLS افتراضيًا. أي مستخدم مصرح به -- أو في بعض التكوينات، أي طلب مجهول الهوية -- يمكنه قراءة كل صف.

عندما يقوم Claude Code بنسخ احتياطي من مشروع Supabase، فإنه ينشئ جداول ويكتب استعلامات من جانب العميل. سيضيف أحيانًا سياسات RLS إذا طلبت. لكن السياسات التي ينشئها غالبًا ما تكون خاطئة بطرق دقيقة.

أخطاء RLS الشائعة في الكود الذي تم إنشاؤه بواسطة AI

الخطأ ما يحدث كيفية الإصلاح
لا توجد RLS مفعلة على الإطلاق أي مستخدم مصرح به يقرأ جميع البيانات ALTER TABLE your_table ENABLE ROW LEVEL SECURITY;
تستخدم السياسة auth.uid() لكن الجدول لا يحتوي على عمود user_id السياسة تترجم لكن تطابق صفوف صفرية، مما يحظر جميع الوصول أضف user_id UUID REFERENCES auth.users(id) وملأها
توجد سياسة SELECT لكن لا توجد سياسات INSERT/UPDATE/DELETE يمكن للمستخدمين قراءة ولكن لا يمكنهم كتابة بياناتهم الخاصة أنشئ سياسات لكل عملية بشكل منفصل
تستخدم السياسة auth.role() = 'authenticated' فقط أي مستخدم مسجل الدخول يمكنه رؤية جميع الصفوف وليس فقط صفوفه الخاصة أضف شرط auth.uid() = user_id
مفتاح دور الخدمة المستخدم في الكود من جانب العميل يتم تجاوز RLS تمامًا لا تكشف أبدًا SUPABASE_SERVICE_ROLE_KEY في حزم العميل

رأينا آخر واحد -- مفتاح دور الخدمة في كود جانب العميل -- في ثلاثة مشاريع منفصلة بناها المصممون هذا العام. قد ينشئ Claude Code مفتاح دور الخدمة لأنه "يعمل" ولا يرمي أخطاء الأذونات. هذا المفتاح يتجاوز كل RLS. ينتمي إلى كود من جانب الخادم فقط (مسارات API، إجراءات الخادم، وظائف حافية). أبدا في مكون use client.

لا يغطي Nervegna RLS في دليله، وهو مفهوم. لكن إذا كنت تتبع سير عمله والاتصال بـ Supabase، فتحقق من كل جدول يدويًا. قم بتشغيل هذا في محرر Supabase SQL:

SELECT schemaname, tablename, rowsecurity
FROM pg_tables
WHERE schemaname = 'public';

إذا كان rowsecurity هو false لأي جدول يحمل بيانات المستخدم، توقف وأصلحه قبل النشر.

مصادقة الانتقال: الفجوة بين النموذج الأولي والإنتاج

المصادقة هي النقطة الفاشلة الأكثر شيوعًا في البناء الذي يقوده المصممون. ليس لأن الإعداد الأولي خاطئ -- مصادقة Supabase سهلة النسخ الاحتياطي -- بل لأن مصادقة الإنتاج تتضمن حالات حدية لا تظهر أثناء التطوير المحلي.

يركز دليل Nervegna على جعل الأشياء تعمل محليًا. إليك ما يكسر عند النشر:

فشل تحديث الرمز

رموز مصادقة Supabase تنتهي بعد 3600 ثانية (ساعة واحدة) بشكل افتراضي. يتعامل عميل Supabase مع التحديث تلقائيًا -- في النظرية. من الناحية العملية، إذا قام Next.js middleware أو مكونات الخادم بإنشاء عميل Supabase جديد في كل طلب دون تمرير الجلسة الموجودة، ستحصل على أخطاء 401 متقطعة بعد الساعة الأولى.

مع Next.js App Router، تحتاج إلى @supabase/ssr (الإصدار 0.5.x اعتبارًا من فبراير 2025) ومعالجة ملفات تعريف الارتباط المناسبة في middleware. يقوم Claude Code بشكل متكرر بإنشاء حزمة @supabase/auth-helpers-nextjs الأقدم والمهجورة. تحقق من package.json.

عدم تطابق URI إعادة التوجيه

موفرو OAuth (Google، GitHub) يتطلبون URIs إعادة التوجيه الدقيقة. يقوم Claude Code بتكوينها لـ localhost:3000. عند النشر على Vercel أو Netlify، تحتاج إلى إضافة عنوان URL الخاص بك الإنتاجي وأي عناوين URL لنشر المعاينة إلى كل من وحدة تحكم موفر OAuth وإعدادات مصادقة Supabase ضمن "Redirect URLs". يستغرق هذا 5 دقائق لكنه يحظر 100% من تسجيلات دخول OAuth إذا فاتك.

مشكلة مزامنة الجلسة

في Next.js 14+، لديك مكونات الخادم ومكونات العميل وmiddleware وطرق API وإجراءات الخادم -- كل منها قد يحتاج إلى جلسة المستخدم الحالية. يجب إنشاء عميل Supabase بشكل مختلف في كل سياق. غالبًا ما ينشئ Claude Code دالة createClient() واحدة ويستخدمها في كل مكان، مما يسبب عدم تطابق الترطيب والجلسات القديمة.

تحتاج على الأقل إلى ثلاث دوال إنشاء عميل:

  • createBrowserClient() لمكونات العميل
  • createServerClient() لمكونات الخادم وإجراءات الخادم
  • createMiddlewareClient() لـ middleware

هذا موثق في دليل SSR الخاص بـ Supabase لكن Claude Code لا ينشئه بشكل متسق بشكل صحيح.

Supabase مقابل Prisma: أيهما يجب أن ينشئ Claude Code؟

لا يعالج Nervegna هذا القرار، وهو يهم أكثر مما يدرك معظم المصممين.

عميل Supabase (@supabase/supabase-js) يسأل قاعدة البيانات من خلال PostgREST API الخاص بـ Supabase. إنه مريح، لا يتطلب ملفات تعريف المخطط، ويعمل مباشرة مع RLS. لكنه لا يعطيك سلامة النوع إلى ما وراء ما ينشئه Supabase، ويربط بإحكام التطبيق الخاص بك بالبنية التحتية لـ Supabase.

Prisma ORM (الإصدار الحالي 6.x) يتصل مباشرة بـ PostgreSQL. يعطيك ملف مخطط (schema.prisma)، وأنواع TypeScript التي تم إنشاؤها، والهجرات، والاستعلامات المستقلة عن قاعدة البيانات. لكنه لا يحترم سياسات RLS (يتصل كمستخدم متميز)، ويتطلب خطوة البناء لإنشاء العميل.

Drizzle ORM (v0.36.x) هو بديل أخف مع بناء جملة شبيه بـ SQL ودعم حقيقي للحافة الأفضل.

مصفوفة القرار

العامل عميل Supabase Prisma Drizzle
دعم RLS أصلي يجب تنفيذه في طبقة التطبيق يجب تنفيذه في طبقة التطبيق
سلامة النوع تم إنشاؤه عبر CLI تم إنشاؤه من المخطط المخطط كرمز
توافقية runtime الحافة نعم محدود (Prisma Accelerate مطلوب) نعم
منحنى التعلم للمصممين منخفض متوسط متوسط
Vendor lock-in عالي (Supabase) منخفض منخفض
جودة توليد Claude Code جيد جيد غير متسق

توصيتنا: إذا كنت تقوم ببناء نموذج أولي أو ستقوم دائمًا بالتشغيل على Supabase، فاستخدم عميل Supabase. إذا كنت بحاجة إلى الانتقال خارج Supabase أو تريد تطويرًا صارمًا يقوده المخطط، فاستخدم Drizzle. لقد انتقلنا بعيدًا عن Prisma للمشاريع الجديدة بسبب قيود حقيقية الحافة، على الرغم من أن Prisma Accelerate ($0 لـ 60K queries/شهر، ثم $49/شهر) قد حسن هذا.

أخبر Claude Code بقرارك بوضوح في ملف CLAUDE.md. إذا لم تفعل، فسوف يمزج الأساليب -- أحيانًا الاستعلام عبر عميل Supabase، وأحيانًا عبر ORM -- وسينتهي بك الحال مع نمطي وصول بيانات مختلفين في نفس المشروع.

إرجاع النشر: ما الذي يحدث عندما ينهار الكود الذي تم إنشاؤه بواسطة الذكاء الاصطناعي

يمشي دليل Nervegna من خلال بناء الميزات بشكل متكرر. لا يعالج ما يحدث عندما تنتج جلسة Claude Code commit تمرر dev محليًا لكنه يكسر الإنتاج.

هذا يحدث في كثير من الأحيان أكثر مما تتوقع. يمكن لـ Claude Code تعديل 15 ملف في استجابة موجه واحد. إذا قمت بالالتزام بهذا كوحدة واحدة وقمت بالنشر، فإن الإرجاع يعني العودة إلى جميع التغييرات 15 -- حتى لو كانت 13 منها بخير.

استراتيجية الإرجاع العملية

1. قم بالالتزام بعد كل تغيير منطقي، وليس بعد كل جلسة Claude Code. إذا قام Claude بتعديل المصادقة وواجهة المستخدم والمخطط الرئيسي في جلسة واحدة، فاجعل ثلاثة التزامات منفصلة.

2. استخدم الإرجاع الفوري على Vercel. إذا كنت تنشر على Vercel، فكل نشر غير قابل للتغيير. يمكنك الإرجاع إلى أي نشر سابق في أقل من 10 ثوان من لوحة التحكم. توفر Netlify نفس الشيء.

3. لا تقم أبدًا بتشغيل هجرات قاعدة البيانات من Claude Code مباشرة. إذا قام Claude بإنشاء ملف هجرة، فراجعه يدويًا قبل تشغيل npx supabase db push أو npx prisma migrate deploy. لا يمكن إرجاع عمود مسقوط باستخدام git revert.

4. وسم الحالات المعروفة الجيدة. قبل بدء جلسة Claude Code التي تلمس المسارات الحرجة (المصادقة والدفع والنماذج البيانية)، أنشئ علامة git: git tag pre-auth-refactor. إذا حدث خطأ ما، فإن git reset --hard pre-auth-refactor يعيدك للخلف.

5. نشرات المعاينة إلزامية وليست اختيارية. يقوم كل من Vercel و Netlify بإنشاء نشرات معاينة لكل PR. لا تدمج إلى main دون النقر من خلال المعاينة. يمكن لـ Claude Code إنشاء كود يعمل محليًا لكن يفشل في الإنتاج بسبب متغيرات البيئة المفقودة أو عدم توافق حقيقية الحافة أو انتهاكات CSP.

سياسة الأمان للمحتوى للأصول المحددة بالوكالة

هذا متخصص لكنه يعض بقوة عند نشر موقع مصمم.

يقوم مكون <Image> في Next.js بوكالة الصور الخارجية من خلال /_next/image بشكل افتراضي. هذا رائع للتحسين. لكن إذا كان لديك رأس سياسة الأمان للمحتوى (والذي يجب أن تفعله)، فتحتاج إلى السماح صراحة بالنطاقات التي تأتي صورك منها.

قد يقوم Claude Code بإعداد next.config.js بـ remotePatterns لتحسين الصور لكنه لن يضيف رؤوس CSP. عند النشر خلف رؤوس أمان Vercel أو إضافة رؤوسك الخاصة عبر middleware، تنهار الصور الخارجية صامتة -- يتم تحميلها محليًا (حيث CSP غالبًا ما يكون متساهلاً) لكن فشل في الإنتاج.

إليك الحد الأدنى الذي تحتاجه في middleware أو رؤوس next.config.js:

// middleware.ts
const cspHeader = `
  default-src 'self';
  script-src 'self' 'unsafe-eval' 'unsafe-inline';
  style-src 'self' 'unsafe-inline';
  img-src 'self' blob: data: https://your-supabase-project.supabase.co https://your-cdn.com;
  font-src 'self';
  connect-src 'self' https://your-supabase-project.supabase.co;
  frame-ancestors 'none';
`;

استبدل 'unsafe-eval' و 'unsafe-inline' بـ nonces للتصلب على الإنتاج. النقطة هي: إذا قام Claude Code بسحب صور من Unsplash أو Supabase Storage أو أي CDN خارجي، ولم تضف تلك النطاقات إلى توجيه CSP img-src، ستحصل على صور مكسورة في الإنتاج مع عدم وجود أخطاء وحدة تحكم في التطوير.

متى تحتاج بالفعل إلى المصادقة الإدارية؟

يغطي دليل Nervegna مصادقة المستخدم الأساسية. تحتاج العديد من المشاريع التي يقودها المصممون إلى واجهة إدارية -- طريقة لمالك الموقع أو فريق المحتوى لإدارة البيانات دون لمس قاعدة البيانات مباشرة.

السؤال هو: متى تحتاج إلى مصادقة إدارية كمسألة منفصلة مقابل مجرد استخدام لوحة تحكم Supabase؟

أنت لا تحتاج إلى مصادقة إدارية مخصصة عندما:

  • أنت الشخص الوحيد الذي يدير المحتوى
  • عميلك مرتاح لاستخدام محرر جداول Supabase
  • المشروع يحتوي على أقل من 3 أنواع محتوى
  • تتم التحديثات أقل من مرة في الأسبوع

أنت تحتاج إلى مصادقة إدارية مخصصة عندما:

  • أعضاء الفريق غير التقنيين يحتاجون إلى إدارة المحتوى
  • تحتاج إلى سير عمل الموافقة أو حالات المسودة/النشر
  • المشروع له وصول قائم على الأدوار (محرر مقابل إداري مقابل عارض)
  • أنت تدير محتوى ينشئه المستخدم يتطلب الإشراف

إذا كنت بحاجة إلى مصادقة إدارية، فإن أبسط نهج هو عمود role على جدول profiles (الذي يعكس auth.users) مع enum: 'user' | 'editor' | 'admin'. ثم أضف سياسات RLS التي تفحص هذا الدور:

CREATE POLICY "Admins can do anything"
ON public.posts
FOR ALL
USING (
  EXISTS (
    SELECT 1 FROM public.profiles
    WHERE profiles.id = auth.uid()
    AND profiles.role = 'admin'
  )
);

يمكن لـ Claude Code إنشاء هذا إذا طلبت منه بشكل محدد. بدون الموجه، سيفترض سياسات بسيطة auth.uid() = user_id التي لا تأخذ في الاعتبار الوصول الإداري. ستنتهي بمسؤول لا يمكنه رؤية محتوى المستخدمين الآخرين.

سير عمل Nervegna المتمثل في تحديد المتطلبات في ملف CLAUDE.md سيمسك هذا -- إذا كنت تفكر في تضمين وصول قائم على الأدوار في متطلباتك. أضفه إلى الملف قبل أن تبدأ البناء.

قبل أن تدفع إلى الإنتاج: قائمة التحقق

هذا ما نستخدمه في Social Animal قبل نشر أي مشروع تم بناؤه أو يساعده بشكل كبير أدوات البرمجة الذكية الاصطناعية.

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

  • RLS ممكن على كل جدول في مخطط public
  • سياسات RLS موجودة لـ SELECT و INSERT و UPDATE و DELETE على كل جدول
  • SUPABASE_SERVICE_ROLE_KEY يستخدم فقط في كود من جانب الخادم (grep الرمز الخاص بك: grep -r "SERVICE_ROLE" --include="*.ts" --include="*.tsx")
  • لا يتم إنشاء عميل Supabase بمفتاح دور الخدمة في أي ملف يحتوي على 'use client'
  • تم مراجعة هجرات قاعدة البيانات يدويًا
  • قيود المفتاح الأجنبي موجودة حيث متوقع
  • الفهارس موجودة على الأعمدة المستخدمة في بند WHERE وسياسات RLS

المصادقة

  • يتم استخدام @supabase/ssr (ليس @supabase/auth-helpers-nextjs المهجورة)
  • توجد دوال إنشاء عميل منفصلة للمتصفح والخادم وسياقات middleware
  • تم تكوين معرفات إعادة توجيه OAuth لنطاق الإنتاج ونطاقات نشر المعاينة
  • تم اختبار تحديث الرمز (اضبط مدة انتهاء الصلاحية بشكل مؤقت وتحقق من أن الجلسات تبقى على قيد الحياة)
  • المسارات المحمية تعيد التوجيه لتسجيل الدخول عند غياب الجلسة
  • تنتهي الجلسة وتمسح جميع ملفات تعريف الارتباط وحالة الجلسة من جانب الخادم

الإدارة والأدوار

  • إذا كانت ميزات إدارية موجودة، فإن فحوصات الأدوار تحدث على مستوى RLS (وليس فقط إخفاء واجهة المستخدم)
  • مسارات الإدارة محمية بواسطة middleware وليس فقط بناء جملة شرطي
  • الدور الافتراضي للمستخدمين الجدد هو الدور الأقل تميز

النشر والإرجاع

  • تم تعيين متغيرات البيئة في منصة النشر
  • علامة git معروفة الجودة موجودة من قبل آخر تغييرات رئيسية بمساعدة AI
  • تم اختبار نشر المعاينة بالنقر من خلال تدفقات أساسية
  • يتم فهم الإرجاع الفوري على Vercel/Netlify وتوثيقه للفريق
  • النسخ الاحتياطية من قاعدة البيانات مفعلة (خطة Supabase Pro تتضمن النسخ الاحتياطية اليومية مقابل $25/شهر)

الأمان والأصول للمحتوى

  • رؤوس CSP تتضمن جميع نطاقات الصور الخارجية في img-src
  • رؤوس CSP تتضمن عنوان URL مشروع Supabase في connect-src
  • مطابقة next.config.js remotePatterns مطابقة CSP img-src نطاقات
  • الخطوط المستضافة ذاتيًا أو CDN الخاص بهم موجود في font-src
  • لا محتوى مختلط (موارد HTTP على صفحات HTTPS)

جودة الكود

  • يتم تفعيل وضع TypeScript الصارم ("strict": true في tsconfig.json)
  • لا @ts-ignore أو أنواع any التي أضافها Claude Code لقمع الأخطاء
  • يمر npm run build بدون تحذيرات (وليس فقط npm run dev)
  • حدود الأخطاء موجودة لمكونات العميل التي تجلب البيانات
  • حالات التحميل والخطأ موجودة للعمليات غير المتزامنة

الأداء

  • تستخدم الصور مكون Next.js <Image> مع width و height أو fill
  • لا توجد جلب بيانات من جانب العميل للبيانات التي يمكن جلبها في مكونات الخادم
  • تم التحقق من حجم الحزمة (npx next@latest build يظهر أحجام المسار)
  • درجة Lighthouse أعلى من 90 للأداء (قم بالتشغيل على نشر المعاينة وليس localhost)

قائمة التحقق هذه ليست شاملة. هذا الحد الأدنى لمشروع يلمس Supabase و Next.js والكود الذي تم إنشاؤه بواسطة الذكاء الاصطناعي.

الأسئلة الشائعة

هل Claude Code جيد بما يكفي للمصممين لبناء تطبيقات الإنتاج؟ Claude Code ممتاز لإنشاء كود عامل من النية التصميمية. لكن الجاهزية الإنتاجية تتطلب معرفة الأمان والمصادقة والبنية التحتية التي لا توفرها الأداة بدون موجه. قرنها بقائمة تحقق ومراجعة كود من شخص لديه خبرة في الخلفية.

هل يعمل دليل Nervegna للمشاريع بعد النماذج الأولية؟ سير عمل Nervegna -- المصادقة الأولى بالسياق والبناء المتزايد والمراجعة التكرارية -- يتسع بشكل جيد. الفجوة في مخاوف الإنتاج مثل RLS وحالات الحافة المصادقة واستراتيجية النشر. نهجه سليم؛ يحتاج إلى الإضافة لأي شيء يواجه المستخدم.

هل يجب أن أستخدم Supabase أو Prisma مع Claude Code؟ استخدم مكتبة عميل Supabase إذا كنت تريد فرض RLS على مستوى قاعدة البيانات وأنت ملتزم بمنصة Supabase. استخدم Drizzle ORM إذا كنت تريد قابلية نقل قاعدة البيانات وتوافقية حقيقية الحافة. لقد انتقلنا بعيدًا عن Prisma للمشاريع الجديدة بسبب قيود الحافة.

كيف أمنع Claude Code من استخدام مفتاح Supabase service role في كود العميل؟ أضف قاعدة صريحة إلى ملف CLAUDE.md: "لا تستخدم أبدًا SUPABASE_SERVICE_ROLE_KEY في مكونات العميل. استخدمه فقط في إجراءات الخادم وطرق API و middleware." يحترم Claude Code التعليمات على مستوى المشروع عند صياغتها بوضوح.

ما هي أرخص طريقة لنشر تطبيق Next.js الذي تم إنشاؤه بواسطة Claude Code؟ خطة Vercel المجانية Hobby تدعم نشر إنتاجي واحد لكل مشروع. تتضمن الطبقة المجانية من Supabase مشروعين مع قاعدة بيانات 500MB وتخزين ملفات 1GB. التكلفة الإجمالية: $0/شهر للمواقع منخفضة حركة المرور. تتوقع الانتقال إلى Vercel Pro ($20/شهر) و Supabase Pro ($25/شهر) بمجرد حصولك على مستخدمين حقيقيين.

كم مرة ينتج Claude Code عن الكود الذي يحتوي على مشاكل أمان؟ من خلال تجربتنا، تقريبًا 40% من جلسات Claude Code التي تتضمن عمليات قاعدة البيانات ينتج عنها كود يحتوي على فجوة RLS واحدة على الأقل. إنه ليس بغيض -- تُحسَّن الأداة للحصول على كود "يعمل"، وانتهاكات RLS لا تنتج أخطاء. كل ما يفعلونه هو الكشف عن البيانات بصمت. دائمًا تدقيق يدويًا.