מבצע חודש יולי · 70% הנחה על קורס Lovable המלא · קוד קופון:

Lovable + Supabase: 3 דברים שחייבים להיות נכונים מהיום הראשון

LIמאת Lovable Israel9 בפברואר 2026·4 דקי קריאה
Lovable + Supabase: 3 דברים שחייבים להיות נכונים מהיום הראשון

Authentication, data model, ו-RLS - אם אלה לא נכונים ביום הראשון עם Lovable + Supabase, כל פיצ'ר חדש יעלה לך פי 3 בזמן. מה לבנות נכון עכשיו כדי לא לשלם tech debt אחר כך.

פיתוח מוצרים בכלי no-code קצת גורמים לזה להרגיש קל מדי. כותבים prompt, מקבלים UI, מחברים Supabase, ו"יש מוצר".

המרחק בין דמו למוצר שאפשר לסמוך עליו נקבע על ידי 3 דברים:

  1. Authentication

  2. מודל נתונים

  3. הרשאות (RLS)

משתפת אתכם בתובנות שלי מתהליך העבודה שלי על הפלטפורמה שבניתי:


1. Authentication ≠ Login. זה החלטת מוצר

הטעות: לחשוב ש-auth זה "Magic link או סיסמה".

האמת: זו החלטה שמשנה הרבה ומשפיעה על אחוזי ההרשמה.

מה לעשות מהיום הראשון:

הפרידו בין זהות טכנית לזהות מוצרית:

  • auth.users = זהות טכנית (Supabase מנהל)

  • profiles = זהות מוצרית (שם, role, plan, preferences)

למה זה קריטי: כשתרצו להוסיף תוכניות תשלום, ארגונים, או הרשאות - תעשו את זה ב-profiles בלי לגעת ב-auth layer.

דוגמה מהשטח:
התחלתי עם הרשמה עם אימייל, מהר מאוד גיליתי שיוזרים מעדיפים Google OAuth. כדאי לתכנן את זה מראש.


2. מודל נתונים: 3-5 טבלאות > טבלה אחת ענקית

הטעות הקלאסית: "נעשה טבלה אחת גדולה שמכילה הכל, זה יותר מהיר."

המחיר: אי אפשר למדוד, אי אפשר להגדיל סקייל, אי אפשר להוסיף הרשאות.

המינימום שעובד:

profiles - משתמש מוצרי
projects/challenges - מה שהמשתמש יוצר/פותר
memberships - מי שייך למה + role
events (optional) - מדידה, דיבוג, אנליטיקס

למה חשוב להתייחס לזה כבר בשלבי הבנייה: גם אם היום יש רק "משתמש אחד בודד", כשתרצו להוסיף:

  • Teams

  • Reviewers

  • B2B plans

הטבלה הזאת היא מה שיאפשר לכם לעשות את זה בלי לשבור הכל.


3. RLS = Trust Feature, לא סתם Security

Row Level Security הוא לא משהו ש"נחמד להוסיף". זה המנגנון שקובע אם המוצר שלך מוכן לצאת החוצה.

RLS: איך לוודא שמשתמש A לא רואה את הנתונים של משתמש B

מה זה בכלל RLS?

Row Level Security זה כלל פשוט: כל שורה בטבלה יודעת למי היא שייכת.

במקום שהקוד שלך יבדוק "האם המשתמש הזה רשאי לראות את הנתונים?" - המסד נתונים עושה את זה בשבילך, אוטומטית.

דוגמה פשוטה: אפליקציית משימות

יש לך אפליקציה עם טבלת tasks. כל משתמש רואה רק את המשימות שלו.

בלי RLS:
הקוד שלך צריך לזכור לפלטר בכל מקום:

"הצג לי משימות WHERE user_id = המשתמש המחובר"

שכחת פעם אחת? כל המשתמשים רואים את המשימות של כולם.

עם RLS:
המסד נתונים פשוט לא מחזיר שורות שלא שייכות למשתמש. גם אם מישהו ינסה לרמות דרך Developer Console - הוא יקבל 0 תוצאות.

למה זה קריטי?

תארו לעצמכם:

  • משתמש פותח את Developer Console

  • הוא משנה פרמטר בקריאת API

  • בלי RLS: הוא רואה נתונים של כולם

  • עם RLS: המסד נתונים מחזיר ריק, גם אם ניסה לרמות

זה ההבדל בין "פרויקט אישי" ל"מוצר שאפשר להשיק".


2 טיפים מעשיים: איך לגרום ל-Lovable לעשות את זה נכון

טיפ 1: בקשו במפורש RLS בכל טבלה חדשה

במקום לכתוב:

"צור טבלה users_documents"

כתבו:

"צור טבלה users_documents עם RLS enabled. כל משתמש יכול לראות ולערוך רק את המסמכים שלו. הוסף policies מתאימות."

למה זה עובד:
Lovable יודע ליצור RLS policies, אבל רק אם תבקשו במפורש. אחרת הוא מניח שתעשו את זה בעצמכם.


טיפ 2: בקשו "secure by default" בהתחלה

בפרומפט הראשוני של הפרוייקט, הוסיפו:

"כל טבלה שיוצרים צריכה להיות secure by default:

  • RLS enabled אוטומטית

  • Policies שמאפשרות למשתמש לגשת רק לנתונים שלו

  • אף פעם לא להשתמש ב-service_role בצד הקליינט"

התוצאה:
Lovable יזכור את זה לאורך כל הפרויקט. כל טבלה חדשה תיווצר עם ברירת מחדל מאובטחת.


כלל הזהב שלי

אם יש בטבלה user_id, owner_id, או created_by:

  • ✅ חובה RLS

  • ✅ חובה להזכיר את זה בפרומפט

  • ❌ לעולם לא service_role_key בצד הקליינט

אחרת: כל משתמש יכול לראות/לשנות/למחוק נתונים של אחרים.

צעדים נכונים יביאו למוצר יציב ומאובטח.

בהצלחה!

LI

Lovable Israel

דלג לתוכן המרכזי