העברת אפליקציית Base44 ל-Supabase: מה זה באמת דורש
Supabase היא התשובה המתבקשת לשאלה "איפה צד השרת שלי צריך לגור", ולכן זה המקום הראשון שבעלי אפליקציות Base44 רבים בודקים. זה יכול לעבוד, אבל זו לא העברה אחד לאחד: אפליקציות Base44 בנויות על מסד נתונים של מסמכים, עם שאילתות בסגנון MongoDB וכללי אבטחה ב-JSON, ו-Supabase היא Postgres. הנה המיפוי המלא ותוכנית מציאותית.
עדכון אחרון: 7 דקות קריאהמאת צוות Unbase44
בעמוד הזה
למה זה שכתוב, ולא ייצוא
Base44 ו-Supabase פותרות את אותן בעיות בצורות שונות. Base44 שומרת כל ישות (entity) כאוסף של מסמכים במסד נתונים תואם MongoDB, שמתשאלים אותו עם אופרטורים של MongoDB (סקירת הישויות). Supabase היא Postgres: טבלאות עם עמודות קבועות, שמתשאלים אותן ב-SQL או דרך שכבת ה-REST שלה.
ההבדל הזה משפיע על כל מה שהאפליקציה שלכם עושה:
- מבנה הנתונים. רשומה ב-Base44 יכולה להכיל אובייקטים ורשימות מקוננים, והסכמה שלה יכולה להשתנות בלי להסב את הנתונים (migration). ב-Postgres כל שדה צריך עמודה וסוג, ונתונים מקוננים הופכים ל-
jsonbאו לטבלה נפרדת. - שאילתות. הדפים והפונקציות שלכם מסננים רשומות עם אופרטורים בסגנון MongoDB, כמו
$in, $or, $gteאו$regex. כל אחת מהקריאות האלה צריכה להיכתב מחדש ל-query builder של Supabase או ל-SQL. - אבטחה. הכללים של Base44 הם תנאים ב-JSON ששמורים עם כל ישות, כמו "
created_byשווה ל-{{user.email}}" אוuser_conditionעל התפקיד של המשתמש (אבטחת ישויות). Supabase משתמשת במדיניות row-level security של Postgres, שנכתבת ב-SQL. כל כלל צריך תרגום ידני ובדיקה, כולל ההתנהגות הספציפית של Base44: רשימות שנחסמו חוזרות ריקות, וקריאות שנחסמו נראות כמו "not found". - התחברות. Base44 לא מוסרת hash של סיסמאות, והתיעוד שלה קובע שאי אפשר לייצא את משתמשי האפליקציה. ב-Supabase, המשתמשים שלכם יצטרכו לבחור סיסמה חדשה, או להתחבר עם קישור באימייל.
- פונקציות. גם פונקציות Base44 וגם Supabase Edge Functions רצות על Deno, וזה עוזר. אבל פונקציות Base44 קוראות ל-SDK של Base44 (כדי לקרוא רשומות, לפעול כ-service role או לשלוח אימייל), וכל קריאה כזו צריך להחליף.
- אינטגרציות.
InvokeLLM, SendEmail, UploadFileו-GenerateImageהם שירותים של Base44. ב-Supabase קוראים ישירות לספק AI, לספק אימייל ול-Supabase Storage, עם מפתחות משלכם.
שום דבר מזה לא אקזוטי. זו פשוט הרבה עבודה, וכולה צריכה להיות נכונה.
המיפוי, חלק אחר חלק
| Base44 | המקבילה ב-Supabase | מאמץ |
|---|---|---|
| ישות (אוסף של מסמכים) | טבלה, עם jsonb לנתונים מקוננים |
בינוני: לתכנן כל טבלה |
| מזהי רשומות (מחרוזות) | מפתח ראשי מסוג text |
נמוך, אם שומרים את המזהים המקוריים |
created_date / updated_date |
עמודות created_at / updated_at |
נמוך |
created_by (האימייל של מי שיצר את הרשומה) |
עמודה של מזהה משתמש, או לשמור את האימייל | בינוני: הכללים תלויים בו |
filter() של ה-SDK עם אופרטורים של Mongo |
שאילתות supabase-js או SQL | גבוה: כל מקום בקוד שקורא לו |
| כללים ברמת השורה וברמת השדה (JSON) | מדיניות RLS ב-SQL, הרשאות לעמודות | גבוה: לתרגם ולבדוק |
| משתמשים ותפקידים | Supabase Auth, ועוד טבלת פרופילים | בינוני |
| סיסמאות | לא ניתנות להעברה | כל משתמש מאפס סיסמה או מתחבר עם קישורים באימייל |
| התחברות עם Google או Microsoft | ספקי Supabase Auth, עם לקוחות ה-OAuth שלכם | נמוך עד בינוני |
| פונקציות שרת (Deno + ה-SDK של Base44) | Edge Functions (Deno + supabase-js) | בינוני עד גבוה |
| אוטומציות ותהליכי עבודה (workflows) | Supabase Cron, database webhooks, Edge Functions | גבוה בתהליכים מרובי שלבים |
subscribe() לזמן אמת |
ערוצי Supabase Realtime | בינוני |
| קבצים שהועלו | Supabase Storage, וכל כתובת URL שמורה נכתבת מחדש | בינוני |
| אינטגרציות של AI, אימייל ותמונות | קריאות ישירות לספקים | בינוני |
| סוכנים ושיחות | מימוש משלכם | גבוה |
תוכנית מציאותית
אם בכל זאת הולכים בדרך הזו, הסדר הזה שומר על הסיכון בשליטה.
- עושים רשימת מלאי. מפרטים כל ישות והשדות שלה, כל כלל אבטחה, כל פונקציה ואילו קריאות היא מבצעת, כל אוטומציה או תהליך עבודה, האינטגרציות שבשימוש (AI, אימייל, העלאות), הקונקטורים והסוכנים. לוח הבקרה של Base44 מראה את רובם; ייצוא של הקוד מראה את השאר.
- מתכננים את הסכמה. לכל ישות מחליטים אילו שדות הופכים לעמודות ומה נשאר ב-
jsonb. שומרים את המזהים של Base44 כמפתחות ראשיים מסוגtext, כדי שההפניות בין הטבלאות ימשיכו להתאים, וזוכרים ש-created_byמחזיק כתובת אימייל, לא מזהה משתמש. - מייצאים את הנתונים. משתמשים בייצוא ה-CSV של לוח הבקרה, טבלה אחר טבלה, או עוברים על ה-API עמוד אחר עמוד. חשוב לזכור שבקשה אחת מחזירה לכל היותר 5,000 פריטים, ולא מציינת שהיא נחתכה (Apps API: ישויות), ולכן צריך לחלק לעמודים ולהשוות ספירות.
- בונים מחדש את כללי האבטחה כמדיניות RLS. בודקים כל אחת עם admin, עם משתמש רגיל ועם מבקר אנונימי. כאן, יותר מבכל שלב אחר, אפליקציות שנבנו מחדש מדליפות נתונים.
- מחליפים את שכבת הנתונים בצד הלקוח. צוותים רבים כותבים עטיפה קטנה עם אותם שמות מתודות כמו ב-SDK של Base44 (
list, filter, get, create, update), כדי שהדפים ישתנו כמה שפחות. סינונים עם אופרטורים הם המקום שבו עטיפות כאלה לא מספיקות, ולכן כדאי לחפש אותם בקוד. - מעבירים את הפונקציות. שומרים את קוד ה-Deno, מחליפים את הקריאות ל-SDK של Base44 ב-supabase-js, ומעבירים את המפתחות הסודיים (secrets) לניהול המפתחות הסודיים של Supabase.
- מחליפים את האינטגרציות. בוחרים ספק AI, ספק אימייל ומבנה אחסון, ומעדכנים כל קריאה.
- מעבירים את המשתמשים. מייבאים אימיילים, שמות ותפקידים, ואז שולחים לכולם קישור לאיפוס סיסמה או להתחברות. מזהירים אותם מראש; מיילי איפוס לא צפויים נראים כמו פישינג.
- מעתיקים את הקבצים. מעלים אותם ל-Supabase Storage וכותבים מחדש כל כתובת URL ששמורה ברשומות.
- מריצים את שתיהן במקביל, ואז עוברים. מפנים דומיין בדיקה לאפליקציה החדשה, עוברים על כל תהליך, ואז מעבירים את הדומיין האמיתי.
באפליקציה קטנה עם קומץ ישויות, מפתח שמכיר היטב את Supabase יכול אולי לעשות את זה בתוך כמה שבועות. אפליקציות עם הרבה פונקציות, תהליכי עבודה או סוכנים לוקחות יותר זמן.
קיצורי דרך, והמחיר שלהם
שכבות תאימות (ה-"migration SDK" שאנשים מחפשים). Base44 לא מפרסמת migration SDK, או כלי כלשהו שמייצא ל-Supabase. מה שהיא מפרסמת הוא הלקוח שלה, @base44/sdk, ברישיון MIT, שמדבר רק עם ה-API של Base44. ב-npm יש חבילות של הקהילה שמעתיקות את הצורה של ה-SDK הזה (entities.X.list(), filter(), auth.me() וכן הלאה), אבל שולחות את הקריאות ל-Supabase דרך supabase-js. הן יכולות לצמצם את השכתוב של צד הלקוח, אבל הן מכסות רק את הקריאות של צד הלקוח. הן לא מעבירות את הנתונים, המשתמשים, כללי האבטחה, הפונקציות, תהליכי העבודה או הקבצים, והכיסוי שלהן לאופרטורי שאילתה, להתנהגות האבטחה של Base44 וליכולות חדשות יותר של ה-SDK משתנה. בדקו כל מסך, במיוחד כל מה שמסנן.
סוכני קוד מבוססי AI. Claude Code או Cursor יכולים לעשות חלק גדול מהעבודה המכנית: לשכתב קריאות בקוד, לייצר הגדרות של טבלאות, להעביר פונקציות. הם הרבה פחות אמינים בכללי אבטחה ובמקרי קצה בנתונים, ושם צריך אדם שמבין את שתי המערכות.
בנייה מאפס בבונה שמבוסס על Supabase. כלים כמו Lovable ו-Bolt בונים אפליקציות על Supabase. לבנות את האפליקציה שם מחדש עם פרומפטים משחזר את הממשק מהר, אבל הנתונים, המשתמשים והלוגיקה העסקית עדיין צריכים את כל מה שתואר למעלה. ראו מעבר מ-Base44 לבונה אחר.
חיבור Supabase לאפליקציית Base44
יש בעלי אפליקציות שלא רוצים לעזוב את Base44 בכלל; הם רוצים שאפליקציית ה-Base44 שלהם תשתמש בנתונים שכבר נמצאים ב-Supabase. אפשר לעשות את זה בשלוש דרכים, ואף אחת מהן לא משנה איפה נמצאים הנתונים של אפליקציית ה-Base44 עצמה.
1. הקונקטור של Supabase. Base44 הוסיפה את Supabase לקטלוג הקונקטורים שלה במרץ 2026 (יומן השינויים של המוצר). קטלוג הקונקטורים מתאר אותו כקריאה בלבד: עיון בסכמה, קריאת טבלאות וצפייה בסטטוס של הפרויקט. כשמחברים אותו, הוא מבקש גישת קריאה לפרויקטים, למפתחות הסודיים ולמסד הנתונים שלכם ב-Supabase. קונקטורים דורשים מסלול Builder ומעלה. הוא מתאים ללוחות בקרה ולדוחות על נתונים שב-Supabase.
2. פונקציית שרת שקוראת ל-Supabase. פונקציות Base44 רצות על Deno ויכולות לייבא חבילות npm עם הקידומת npm: (פונקציות שרת), כך שפונקציה יכולה להשתמש ב-supabase-js כדי לקרוא ולכתוב. שמרו את המפתח של Supabase במפתחות הסודיים של האפליקציה, אף פעם לא בקוד של הדף. המדריך למפתחות API של Supabase עצמה מסביר למה: מפתח סודי (secret key) עוקף כל מדיניות row-level security, ולכן מקומו רק בשרת. פונקציות שרת, וקריאות ל-API חיצוניים באופן כללי, דורשות מסלול Builder ומעלה (ניהול הנתונים של האפליקציה).
3. קריאה ל-Supabase מהדפדפן. Base44 מאפשרת להוסיף חבילות npm לאפליקציה, כך שצד הלקוח יכול להשתמש ב-supabase-js עם המפתח הציבורי (publishable key) של Supabase. המפתח הזה ציבורי מעצם הגדרתו, ורק ה-row-level security של Supabase קובע למה הוא יכול להגיע, ולכן הפעילו RLS בכל טבלה לפני כן.
מה שאף אחת מהדרכים האלה לא עושה:
- להחליף את מסד הנתונים של Base44. הישויות שלכם נשארות במסד הנתונים של Base44, והתיעוד שלה לא מתאר שום דרך לשים אותן במקום אחר. בסוף יש לכם שני מסדי נתונים ושתי מערכות של כללי אבטחה, שצריך לשמור על עקביות ביניהן.
- להעביר את המשתמשים. ההתחברות נשארת ב-Base44, ו-Supabase Auth לא יודע כלום על המשתמשים שלכם ב-Base44.
- לשחרר אתכם מהמסלול. כל מה שתואר למעלה רץ על Base44, תחת המסלולים והקרדיטים שלה.
אם המטרה היא לעזוב בסופו של דבר, התייחסו לחיבור כזה כגשר, לא כהעברה.
מתי Supabase מתאימה, ומתי לא
היא מתאימה כשאתם רוצים Postgres בזכות עצמו (דוחות ב-SQL, מחסן נתונים, צוות שכבר מכיר אותו), כשממילא תכננתם בנייה מחדש משמעותית, או כשיש לכם מפתח זמין וכמה שבועות.
היא הכלי הלא נכון כשאתם רוצים את האפליקציה שכבר יש לכם, שתרוץ באותה צורה, ובקרוב; כשיש לכם הרבה משתמשים שאתם לא רוצים לאפס להם סיסמאות; או כשהאפליקציה נשענת על שאילתות בסגנון MongoDB, על נתונים מקוננים, על תהליכי עבודה או על סוכנים.
האלטרנטיבה: לשמור על מודל הנתונים, ולהחליף את הבעלים
אם מה שאתם רוצים הוא עצמאות ולא Postgres, לא צריך לתרגם כלום. Unbase44 מעביר את כל האפליקציה לצד שרת מתועד ותואם Base44 על MongoDB, בחשבונות שבבעלותכם. הקוד ממשיך לקרוא לאותו API, הרשומות שומרות על הצורה ועל המזהים שלהן, כללי האבטחה נאכפים באותה דרך, והמשתמשים שומרים על הסיסמאות שלהם.
ואם תרצו Postgres בהמשך, תעשו את ההעברה הזו ממאגר (repository) וממסד נתונים שבשליטתכם, בקצב שלכם, ולא כמחיר היציאה.
שאלות ותשובות
אפשר לייצא מ-Base44 ישירות ל-Supabase?
לא. Base44 מייצאת קוד (ZIP או GitHub, במסלול Builder ומעלה) ונתונים כ-CSV, טבלה אחת בכל פעם. יכולת ההעברה שלה עובדת בכיוון ההפוך: היא מייבאת פרויקטים אל Base44 מכלים שמבוססים על Supabase, כמו Lovable ו-Bolt.
אפשר לחבר את Supabase ל-Base44?
כן, לצד מסד הנתונים של Base44 עצמה, לא במקומו. הקונקטור של Supabase ב-Base44 קורא סכמות וטבלאות, ופונקציית שרת יכולה לקרוא ולכתוב עם supabase-js ומפתח ששמור במפתחות הסודיים של האפליקציה. שתי הדרכים דורשות מסלול Builder ומעלה, והישויות והמשתמשים שלכם נשארים ב-Base44.
יש migration SDK מ-Base44 ל-Supabase?
לא מ-Base44. ה-SDK שלה, @base44/sdk, מדבר רק עם ה-API של Base44. חבילות של הקהילה ב-npm מחקות את ה-SDK הזה על גבי supabase-js, וזה מצמצם את השכתוב של צד הלקוח, אבל הן לא מעבירות נתונים, משתמשים, כללי אבטחה או פונקציות, וכדאי לבדוק כל שאילתה שמסננת.
פונקציות ה-Base44 שלכם ירוצו על Supabase Edge Functions?
שתיהן מריצות Deno, כך שהשפה וסביבת הריצה עוברות. אבל צריך לשכתב את הפונקציות בכל מקום שבו הן קוראות ל-SDK של Base44, ובדרך כלל זה רוב מה שהן עושות.
המשתמשים ישמרו על הסיסמאות שלהם אם עוברים ל-Supabase?
לא. Base44 לא מוסרת hash של סיסמאות, ולכן המשתמשים יבחרו סיסמה חדשה או יתחברו עם קישור באימייל. תכננו בזהירות את התקשורת איתם.
Unbase44 מעביר אפליקציות ל-Supabase?
לא. אנחנו משאירים את האפליקציה על סוג מסד הנתונים שהיא נבנתה בשבילו, MongoDB, עם צד שרת שעונה על אותו API. לכן האפליקציה לא נכתבת מחדש (צד הלקוח שלה מקבל רק כמה תיקונים קטנים, שמפורטים בקובץ docs/MIGRATION.md שבמאגר), והסיסמאות עוברות.
מקורות
נבדק בתאריך 4 באוקטובר 2026. Base44 משתנה מהר; אם משהו כאן כבר לא מעודכן, נשמח לדעת.
- סקירת הישויות (מסד נתונים תואם MongoDB)
- אבטחת ישויות (כללים ברמת השורה וברמת השדה)
- Apps API: ישויות (תקרה של 5,000 רשומות)
- פרטיות ואבטחה (אי אפשר לייצא את משתמשי האפליקציה)
- העברת פרויקט ל-Base44 (ייבוא מ-Lovable ומ-Bolt)
- פונקציות שרת (Deno, ייבוא
npm:) - קטלוג הקונקטורים (הקונקטור של Supabase, קריאה בלבד, מסלול Builder)
- יומן השינויים של Base44 (הוספת הקונקטור של Supabase, מרץ 2026)
- ניהול הנתונים של האפליקציה (API חיצוניים דורשים מסלול Builder)
- הוספת חבילות npm ושימוש בהן
- ה-SDK של Base44 ל-JavaScript ב-GitHub (רישיון MIT)
- Supabase: מפתחות API (מפתחות ציבוריים, מפתחות סודיים ו-row-level security)