איך לעבוד עם Supabase ו-Claude Code — מדריך מלא

Backend מלא בלי לכתוב שרת — Supabase + Claude Code

למה Supabase?

הייתי צריך דאטאבייס לפרויקט של לקוח. בעבר הייתי מקים שרת Express, מגדיר PostgreSQL, כותב API routes, מטפל באותנטיקציה — ימים של עבודה. עם Supabase סיימתי את כל זה בשעה. Supabase זה בעצם Firebase אבל עם PostgreSQL אמיתי. אתם מקבלים: • דאטאבייס PostgreSQL — הדבר האמיתי, לא NoSQL מוגבל • אותנטיקציה — הרשמה, התחברות, Google login, magic links • Storage — אחסון קבצים (תמונות, מסמכים) • Realtime — עדכונים בזמן אמת • Edge Functions — לוגיקת שרת בלי שרת • REST API אוטומטי — כל טבלה מקבלת API בחינם ה-tier החינמי מספיק לרוב הפרויקטים. שני פרויקטים בחינם, 500MB דאטאבייס, 1GB storage.

הקמת פרויקט Supabase

שלב 1 — יצירת חשבון: היכנסו ל-supabase.com, הירשמו עם GitHub (הכי מהיר). שלב 2 — פרויקט חדש: לחצו "New Project", בחרו שם, סיסמה לדאטאבייס, ואזור (בחרו הכי קרוב — eu-central-1 לאירופה). שלב 3 — שמרו את המפתחות: בהגדרות הפרויקט (Settings > API) תמצאו: • Project URL — כתובת הAPI שלכם • anon key — מפתח ציבורי לצד הלקוח • service_role key — מפתח סודי! רק לצד שרת! שלב 4 — קובץ env: צרו קובץ .env.local בפרויקט: NEXT_PUBLIC_SUPABASE_URL=your-project-url NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key חשוב: ה-service_role key לעולם לא צריך להיות ב-NEXT_PUBLIC. הוא סודי.

הפרומפט שאני נותן ל-Claude Code

הנה הפרומפט שמקים הכל בבת אחת: "אני רוצה לחבר את הפרויקט ל-Supabase. הנה הפרטים: • Supabase URL: [הURL שלכם] • Framework: Next.js 15 App Router • צריך: @supabase/supabase-js ו-@supabase/ssr תעשה את הדברים הבאים: 1. התקן את הpackages 2. צור lib/supabase/client.ts — client-side Supabase client 3. צור lib/supabase/server.ts — server-side Supabase client עם cookies 4. צור middleware.ts שמרענן את הsession 5. תוודא שה-.env.local כבר מוגדר ב-.gitignore" Claude Code יתקין הכל, יגדיר client ו-server clients, ויכין middleware. תוך דקות יש לכם חיבור עובד.

בניית טבלאות — פרומפטים מוכנים

טבלת משתמשים (profiles): "צור ב-Supabase טבלת profiles עם: id (uuid, מקושר ל-auth.users), full_name (text), email (text), avatar_url (text), created_at (timestamp). תוסיף RLS policy שמאפשרת למשתמש לקרוא ולערוך רק את הפרופיל שלו. צור trigger שיוצר פרופיל אוטומטית כשמשתמש נרשם." טבלת מוצרים: "צור טבלת products עם: id (uuid), name (text), description (text), price (numeric), image_url (text), category (text), is_active (boolean), created_at. תוסיף RLS — כולם יכולים לקרוא מוצרים פעילים, רק אדמין יכול לערוך." טבלת הזמנות: "צור טבלת orders עם: id, user_id (מקושר ל-profiles), items (jsonb), total (numeric), status (enum: pending/paid/shipped/delivered), created_at. צור גם טבלת order_items עם: id, order_id, product_id, quantity, price. RLS — משתמש רואה רק את ההזמנות שלו." את ה-SQL אני מריץ ב-SQL Editor של Supabase, או שClaude Code יוצר migration files.

אותנטיקציה — הרשמה והתחברות

הפרומפט שאני משתמש: "תבנה מערכת אותנטיקציה מלאה עם Supabase Auth: 1. דף הרשמה — אימייל וסיסמה, שם מלא 2. דף התחברות — אימייל וסיסמה 3. כפתור התחברות עם Google (OAuth) 4. דף שכחתי סיסמה 5. middleware שמגן על דפים מסוימים (dashboard, profile) 6. כפתור התנתקות ב-header 7. שמירת session עם cookies (SSR-safe) כל הטקסט בעברית. טיפול בשגיאות — אימייל כבר קיים, סיסמה חלשה, אימייל לא תקין." זה נותן לכם מערכת הרשמה מלאה. Claude Code ייצור את הדפים, הלוגיקה, ואת ה-middleware שמגן על routes. טיפ: להתחברות עם Google, צריך להגדיר OAuth ב-Google Cloud Console ולהוסיף את ה-credentials בהגדרות Supabase (Authentication > Providers).

Storage — העלאת קבצים

Supabase Storage מאפשר להעלות ולאחסן קבצים. אני משתמש בזה לתמונות פרופיל, תמונות מוצרים, ומסמכים. "תבנה רכיב העלאת תמונות עם Supabase Storage: 1. צור bucket בשם 'avatars' (public) 2. רכיב React שמאפשר לבחור תמונה, לראות תצוגה מקדימה, ולהעלות 3. הגבלה — רק תמונות, עד 2MB 4. לאחר העלאה — עדכן את avatar_url בטבלת profiles 5. הצג את התמונה הנוכחית עם fallback לאווטר ברירת מחדל" RLS ל-Storage: • avatars bucket — כל אחד יכול לקרוא (public), רק בעל החשבון יכול להעלות/למחוק • documents bucket — רק בעל החשבון יכול לקרוא/לכתוב (private) חשוב: צרו את ה-buckets דרך ממשק Supabase (Storage > New Bucket) לפני שכותבים קוד.

טעויות שעשיתי עם Supabase

1. שכחתי RLS יצרתי טבלה, הכנסתי נתונים, הכל עבד. ואז הבנתי שכל אחד יכול לראות הכל. Supabase מפעילה RLS כברירת מחדל, אבל בלי policies — אף אחד לא יכול לגשת. ברגע שהוספתי policy רחב מדי — חשפתי מידע. פתרון: תמיד הגדירו policies ספציפיות. "משתמש רואה רק את הנתונים שלו." 2. חשפתי את service_role key שמתי את ה-service key ב-NEXT_PUBLIC. זו טעות ביטחונית חמורה — הוא עוקף RLS. פתרון: service_role רק בצד שרת (Server Components, API routes). anon key בצד לקוח. 3. לא הגדרתי types עבדתי בלי TypeScript types ל-Supabase. כל שאילתה הייתה any. באגים בכל מקום. פתרון: "תריץ npx supabase gen types typescript ותעדכן את database.types.ts" 4. שכחתי indexes הדאטאבייס היה איטי. 10,000 שורות וכל שאילתה לקחה שניות. פתרון: "תוסיף index על כל עמודה שמשמשת ב-WHERE או ב-ORDER BY." 5. לא עשיתי backup שיניתי schema ומחקתי עמודה עם נתונים. אין דרך חזרה. פתרון: לפני כל שינוי ב-schema — export של הנתונים.

רוצים ללמוד Claude Code עם הדרכה אישית?

שעה אחת בזום, 1-על-1, מותאם לרמה שלכם. 300 ₪ בלבד.

לפרטים ולהרשמה

אין לכם זמן לבנות לבד? אנחנו בונים אתרים, מערכות ואפליקציות עם Claude Code — בשבילכם.

errnio בונה פתרונות דיגיטליים מותאמים אישית לעסקים — עם הטכנולוגיה הכי מתקדמת

פרויקטים שבנינו עם Claude Code

אתרים ומערכות שנבנו ע"י errnio — לעסקים אמיתיים