iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
Modern Web

Lovable: 地球上最強的 AI 生成全端網站Agentic開發實戰系列 第 9

第 9 章:讓 AI 幫你長出後端:Lovable + Supabase

  • 分享至 

  • xImage
  •  

本章目標

讀完這一章,你會知道如何在 Lovable 裡把前端頁面接上真正的後端。你會理解 Lovable、Supabase 與 Lovable Cloud 的分工,學會描述資料模型、產生資料表、連接表單與列表、使用 Storage、Realtime、Edge Functions 和 Secrets,並知道為什麼 RLS(Row Level Security,列層級安全) 是 production(正式上線)app 的安全底線。

這章不會把所有後端主題一次講完。登入與權限會留到第 10 章,金流、Email、AI 與第三方 API 會留到第 11 章。第 9 章要先處理一件事:讓你的產品資料真的可以被保存、讀取、更新、驗證和保護。

為什麼這一章重要

第 8 章做完首頁後,你已經有一個像產品的介面。但只要資料還停在畫面上,它就仍然只是 prototype(原型)。

真正的全端網站至少要回答這些問題:

  • 使用者輸入的資料存在哪裡?
  • 哪些資料可以被讀取?
  • 哪些資料可以被修改?
  • 檔案要放在哪裡?
  • 需要即時更新嗎?
  • 需要後端 function 嗎?
  • API key(API 金鑰) 和 secret 放在哪裡?
  • 上線前資料存取規則是否安全?

Lovable + Supabase 的價值,是你可以用產品語言描述需求,讓 Lovable 協助你產生 UI(使用者介面)、資料表、查詢邏輯與後端 function。你仍然要審查資料模型與安全規則,但你不用從空白專案開始手刻所有 boilerplate。

這是 Lovable 從「AI 網頁產生器」變成「AI 全端網站 agent」的關鍵分界。

思考模型:後端不是資料庫,是產品狀態

很多人聽到後端,第一反應是 database。這只對一半。

在產品裡,後端代表的是「產品狀態」:

資料表 = 產品記憶
身分驗證 = 誰正在使用
Storage = 使用者上傳的檔案
Realtime = 狀態變更如何同步
Edge Functions = 不能放在前端的邏輯
Secrets = 不能曝光的憑證
RLS = 誰可以碰哪些資料

所以你不要只問 Lovable:

請新增資料庫。

你要描述:

這個產品需要保存更新日誌項目。
每個項目都屬於一個專案。
團隊成員可以撰寫項目草稿。
已發布的項目會顯示在公開更新日誌頁面。
未發布的草稿只供通過身分驗證的團隊成員查看。

這樣 Lovable 才能從產品規則推導資料模型,而不是只幫你生一張模糊的 table。

Supabase 與 Lovable Cloud 的選擇

Lovable 文件裡有兩條後端路線:

  • 連接你自己的 Supabase project(專案)。
  • 使用 Lovable Cloud。

兩者都以 Supabase 的 open-source foundation 為基礎,都能提供 database、auth(驗證)、storage、edge functions 等能力。差別在於管理方式。

使用自己的 Supabase project(專案)

這條路線適合:

  • 你已經有 Supabase 帳號與 project(專案)。
  • 你想直接管理 Supabase dashboard(儀表板)。
  • 你想清楚掌握資料庫、auth(驗證)、storage、SQL editor。
  • 你可能會讓其他工具或程式也連同一個 Supabase backend(後端)。

Lovable 會透過 Supabase integration 連到你的 project(專案),協助你產生 schema、UI(使用者介面)與後端邏輯。當需要建立 table 或修改 schema 時,Lovable 可能會給你 SQL snippet,請你到 Supabase SQL Editor 執行,再回到 Lovable 確認完成。

使用 Lovable Cloud

Lovable Cloud 是 Lovable 內建的 full-stack cloud platform。它把 backend(後端)hosting、database、auth(驗證)、storage、edge functions、AI 和 logs 放進 Lovable 工作流裡,讓你不必另外建立 Supabase project(專案)。

這條路線適合:

  • 你想盡量留在 Lovable 裡完成全端開發。
  • 你不想一開始就管理外部 Supabase project(專案)。
  • 你接受 Lovable Cloud 的區域、credit、usage 與管理方式。
  • 你需要 Cloud tab 裡的 database、auth(驗證)、storage、logs、usage、backup 等整合視圖。

但使用 Lovable Cloud 前要先知道幾個限制:

  • Cloud region 建立後不能變更。
  • Cloud usage 會消耗 Run credits。
  • 移除 Lovable Cloud 會永久刪除 Cloud instance,必須先匯出資料和下載 storage files。
  • Cloud project(專案)可以匯出 database,但 Lovable 文件標示沒有一鍵轉移到 Supabase。
  • Test and Live environments 在文件中標示為 Beta,且截至 2026-03-24 已不再提供給新的 Cloud projects。既有已使用的 Cloud projects 才繼續保有 access。

本章的建議

如果你是個人或小團隊,想學清楚資料庫與後端概念,我建議先用自己的 Supabase project(專案)練習。你會更明確看到資料表、SQL、Auth(驗證)、Storage、Policies 和 Logs。

如果你想快速做 app,且接受 Lovable Cloud 的管理方式,可以用 Lovable Cloud。實務上,你要看的不是哪個比較「高級」,而是哪個比較符合你的 ownership、部署、成本與資料治理需求。

Lovable Supabase integration 文件說明 database、auth、storage、realtime 與 Edge Functions 的完整後端能力

圖 9-1:連接自己的 Supabase project 後,Lovable 可以從 chat 設計 schema、執行 migration、部署 Edge Functions,並把 UI 接上資料。

Lovable Cloud 文件說明內建 database、authentication、storage、edge functions 與 AI

圖 9-2:Lovable Cloud 提供同一套全端能力但不需另設 Supabase account;選擇重點在後端所有權、帳務與管理介面。

開始之前

開始第 9 章前,請先準備:

  • 一個 Lovable project(專案)。
  • 一個 Supabase account,或啟用 Lovable Cloud 的權限。
  • 一個明確的資料需求。
  • 一個可以測試寫入與讀取的 UI(使用者介面)flow。
  • 一個還沒有真實使用者資料的測試環境。

本章延續第 8 章的 LaunchNote 案例。

LaunchNote 是給台灣獨立開發者和小型 SaaS 團隊使用的更新日誌工具。

它需要保存:
- 專案
- 更新日誌項目
- 標籤
- 附件

最小可行後端:
- 建立更新日誌項目。
- 編輯草稿。
- 發布項目。
- 顯示公開更新日誌。
- 上傳項目封面圖片。

這是一個適合練習 Supabase 的案例,因為它有資料表、關聯、狀態、公開頁面、內部管理頁面和檔案上傳。

步驟 1:先描述資料模型,不要先做畫面

做後端時,最容易犯的錯是先請 Lovable 加一個 form。表單很快會出來,但資料模型可能很亂。

正確順序是:

產品物件
-> 欄位
-> 關聯
-> 狀態
-> 權限
-> UI

你可以先用 Plan Mode 要 Lovable 幫你設計資料模型:

實作前,請先規劃 LaunchNote 的後端資料模型。

產品背景:
LaunchNote 讓小型 SaaS 團隊把產品更新發布到公開更新日誌。

核心物件:
- 專案
- 更新日誌項目
- 標籤
- 附件

規則:
- 一個專案可以有多筆更新日誌項目。
- 一筆更新日誌項目屬於一個專案。
- 一筆更新日誌項目可以有多個標籤。
- 更新日誌項目的狀態可以是草稿或已發布。
- 已發布項目會顯示在公開更新日誌頁面。
- 草稿只會顯示在內部儀表板。
- 附件可以包含項目內使用的圖片。

請提出:
- 資料表和欄位。
- 關聯。
- 重要索引。
- 應設為必填的欄位。
- 基本 RLS Policy 假設。
- 現在應實作和留待日後實作的項目。

暫時不要修改應用程式。

這個提示詞的目標不是讓 Lovable 立刻改程式,而是先產生一份可以審查的 database plan。

步驟 2:審查 schema,特別是狀態與 ownership

Lovable 可以幫你產生資料表,但你不能把 schema 審查外包掉。資料模型一旦錯了,後面 UI(使用者介面)、auth(驗證)、RLS(Row Level Security,列層級安全)、API 都會跟著歪。

審查時請特別看:

  • 每張 table 是否有清楚用途。
  • 是否有 idcreated_atupdated_at
  • 是否需要 owner_idteam_idproject_id
  • draft / published 這類狀態是否明確。
  • public page 需要查哪些資料。
  • internal dashboard(儀表板) 需要查哪些資料。
  • 刪除資料時是否會影響關聯資料。
  • 是否需要 index 支援常見查詢。

以 LaunchNote 來說,最小 schema 可能會像這樣:

projects
- id
- name
- slug
- description
- created_at
- updated_at

changelog_entries
- id
- project_id
- title
- slug
- summary
- content
- status
- published_at
- cover_image_url
- created_at
- updated_at

tags
- id
- project_id
- name
- slug
- created_at

changelog_entry_tags
- entry_id
- tag_id

你不一定要在第一版就把 ownership、team membership、audit log 全做完。但你必須知道這些東西會在哪裡接上。

這就是第 9 章和第 10 章的分界:第 9 章先建立資料模型,第 10 章再把 user、role、permission 補完整。

步驟 3:讓 Lovable 建立 table 並接上 UI(使用者介面)

當 schema plan 確認後,再進入 Build Mode:

請實作 LaunchNote 的第一個後端版本。

請使用 Supabase 作為資料持久化方案。

為以下物件建立必要的資料庫 Schema:
- projects
- changelog_entries
- tags
- changelog_entry_tags

建置以下使用者介面流程:
- 列出更新日誌項目的內部儀表板頁面。
- 建立項目表單。
- 編輯項目表單。
- 只顯示已發布項目的公開更新日誌頁面。

項目欄位:
- title
- summary
- content
- status:draft 或 published
- published_at
- cover_image_url

行為:
- 儲存為草稿時,該項目不會出現在公開更新日誌。
- 發布時將 status 設為 published,且 published_at 為必填。
- 公開更新日誌只顯示已發布項目,並依 published_at 由新到舊排序。

完成整合前,請先顯示我需要執行的所有 SQL。

如果你使用自己的 Supabase project(專案),Lovable 可能會產生 SQL snippet。請到 Supabase SQL Editor 執行,再回 Lovable 說明你已完成。

執行 SQL 前,請先看懂它大概做了什麼。你不需要變成 DBA,但至少要確認:

  • 它建立的是你期待的 table。
  • 欄位名稱沒有明顯錯誤。
  • 關聯沒有反過來。
  • 沒有刪除不該刪的資料。
  • 沒有新增過度寬鬆的 policy。

步驟 4:用種子資料測試讀寫

後端接上後,不要只看畫面。你要測試資料真的有進 database。

最小測試流程:

  1. 建立一筆 draft entry。
  2. 確認 internal dashboard(儀表板) 看得到。
  3. 確認 public changelog 看不到。
  4. 將 entry publish。
  5. 確認 public changelog 看得到。
  6. 到 Supabase Table Editor 或 Cloud tab database 檢查資料列。
  7. 修改 entry,再確認 updated_at 或畫面內容有更新。

你可以請 Lovable 幫你建立 seed data:

請新增用來測試 LaunchNote 的種子資料。

請建立:
- 一個名為「LaunchNote Demo」的專案。
- 三筆更新日誌項目。
- 一筆草稿。
- 兩筆 published_at 日期不同的已發布項目。
- 三個標籤:產品、修正、改善。

加入種子資料後,請驗證:
- 儀表板顯示所有項目。
- 公開更新日誌只顯示已發布項目。
- 已發布項目依時間由新到舊排序。

目前不要加入身分驗證。

如果 Lovable 需要你執行 SQL,請先確認資料是測試資料,不是真實 production(正式上線)data。

步驟 5:加入 Storage,但不要把檔案當一般欄位

產品很快會需要圖片或檔案。以 LaunchNote 來說,每篇 changelog entry 可能需要 cover image 或附件。

Supabase Storage 或 Lovable Cloud Storage 可以處理這件事。資料表通常只保存檔案 URL、path 或 metadata(中繼資料),不直接把檔案塞進資料表。

你可以這樣 提示詞:

請為更新日誌項目新增封面圖片上傳功能。

需求:
- 使用者建立或編輯項目時,可以上傳一張封面圖片。
- 把檔案儲存在後端 Storage。
- 把圖片 URL 或 Storage 路徑儲存在 changelog_entries 資料列。
- 在公開更新日誌頁面顯示已發布項目的封面圖片。
- 驗證檔案類型為圖片。
- 上傳期間,使用者介面仍應可以正常操作。
- 上傳失敗時顯示清楚的錯誤訊息。

這項功能不要允許上傳影片。

審查重點:

  • bucket 是否應該 public?
  • 檔案是否需要登入後才能讀?
  • public changelog 的圖片是否可以公開讀取?
  • 上傳失敗時 UI(使用者介面)是否有錯誤狀態?
  • 大檔案是否會拖慢頁面?

Lovable Cloud 文件提到 storage buckets 預設是 private,且所有 plans 預設阻擋建立 public storage buckets。這是好事,因為公開檔案應該是明確決策,不是無意間發生。

步驟 6:需要即時更新時才使用 Realtime

Supabase 支援 realtime updates。這很強,但不代表每個功能都要即時。

適合 Realtime 的情境:

  • live chat。
  • collaborative dashboard(儀表板)。
  • 即時 activity feed。
  • 多人同時看狀態變化。
  • 需要立刻更新的 notification。

不一定需要 Realtime 的情境:

  • public changelog。
  • 部落格文章列表。
  • 設定頁。
  • 使用者偶爾更新的 profile。

LaunchNote 的 public changelog 通常不需要 realtime。但 internal dashboard(儀表板) 如果團隊多人一起編輯,就可以考慮讓列表即時更新。

範例:

只在內部更新日誌儀表板新增 Realtime 更新。

當其他團隊成員建立、更新、發布或刪除項目時,不必重新整理頁面就更新儀表板清單。

不要在公開更新日誌頁面加入 Realtime 行為。
實作範圍僅限於 changelog_entries。

Realtime 會增加複雜度與資源使用。請把它留給真的需要即時同步的產品場景。

步驟 7:Edge Functions 用在前端不能做的事

Edge Functions 是後端邏輯的位置。只要某件事不能安全地放在 browser 裡,就應該考慮放到 Edge Function。

常見情境:

  • 呼叫需要 secret key 的 API。
  • 寄 email。
  • 做 AI 摘要。
  • 處理付款 webhook(事件回呼)。
  • 做排程任務。
  • 做複雜資料處理。

在第 9 章,我們先用一個不碰外部金流的例子:發布 changelog 時,自動產生一段短摘要。

請為更新日誌發布流程新增 Edge Function。

當項目發布時:
- 根據項目內容產生一段簡短易懂的摘要。
- 把摘要儲存到 summary 欄位。
- 保持原始內容不變。
- 如果摘要產生失敗,請回傳清楚的錯誤。

這個工作流程請使用後端邏輯。
不要在前端程式碼暴露任何 Secret Key。

這裡的重點不是 AI,而是「這段邏輯應該跑在後端」。第 11 章會再深入 AI、Email、Paddle 和第三方 API。

步驟 8:Secrets 和 .env 要分清楚

Lovable Cloud 工具權限畫面說明 Always allow、Ask each time、Never allow,並列出 Database、Auth、Storage 與 Edge Functions

圖 9-3:Cloud 工具可依風險設定自動允許、逐次核准或禁止;涉及 schema、auth、storage 與 secret 的操作,建議保留明確的核准界線。

Lovable Cloud 文件把 Secrets 和 VITE_ environment variables 分得很清楚:

  • Secrets 是 backend(後端)用的值,放在 Secrets manager。
  • VITE_ 開頭的是 build-time browser-exposed values,放在 .env

簡單判斷:

不能被使用者看到 -> Secrets
本來就會進瀏覽器程式包 -> VITE_ .env

適合放 Secrets 的例子:

  • RESEND_API_KEY
  • OPENAI_API_KEY
  • third-party service credentials
  • webhook(事件回呼)signing secret

適合放 .env 的例子:

  • VITE_SUPABASE_URL
  • VITE_SUPABASE_PUBLISHABLE_KEY

不要把 secret 塞進前端。也不要以為變數名稱很隱密就安全。只要進 browser bundle,使用者就有機會看到。

你可以請 Lovable 做一次檢查:

請檢查這個專案使用環境變數和 Secrets 的方式。

檢查:
- 沒有後端 Secret 暴露在前端程式碼中。
- 所有 VITE_ 變數都可以安全公開。
- Edge Functions 從 Secrets 讀取私人憑證。
- 原始碼檔案中沒有寫死的 API Key。

修改前,請先回報調查結果。

步驟 9:RLS(Row Level Security,列層級安全) 是 production(正式上線)baseline

RLS(Row Level Security,列層級安全), Row Level Security, 是 Supabase app 上線前最重要的安全概念之一。它控制誰可以讀或寫哪些 rows。

Lovable 文件也明確提醒:Supabase 的 development default 可能比較寬鬆,上線前必須設定 RLS(Row Level Security,列層級安全) policies,並在 Supabase dashboard(儀表板) 裡審查與測試。

第 9 章先建立一個基本觀念:

沒有經過 RLS 審查,就不要把含有真實資料的應用程式視為可正式上線。

即使你還沒做登入,也要先知道未來的 policy 會怎麼長。以 LaunchNote 來說:

  • public users 可以讀 published entries。
  • public users 不可以讀 drafts。
  • authenticated team members 可以讀自己的 project(專案)entries。
  • authenticated team members 可以 create / update entries。
  • 不是 team member 的使用者不能碰別人的 project(專案)。

你可以請 Lovable 先產生 RLS(Row Level Security,列層級安全) plan:

請為 LaunchNote 建立 RLS Policy 計畫。

目前的資料表:
- projects
- changelog_entries
- tags
- changelog_entry_tags

存取規則:
- 公開訪客可以讀取已發布的更新日誌項目。
- 公開訪客不能讀取草稿。
- 通過身分驗證的團隊成員,可以讀取和編輯自己所屬專案的項目。
- 使用者不能存取自己不屬於的專案。

請提供:
- 必要的所有權或成員關係資料表。
- 讀取、新增、更新和刪除所需的 Policy。
- 驗證 Policy 的測試案例。

暫時不要套用 Policy,我要先審查計畫。

這個 plan 會自然銜接第 10 章,因為完整權限需要 auth(驗證)、user roles、membership table 和 test users。

步驟 10:Cloud Test / Live 觀念要保守使用

Lovable 的 Environments 文件描述 Test and Live environments:Lovable 在 Test 建置,Live 是 production(正式上線),publish 才把 application code 和 database schema 同步到 Live。資料和 Cloud configuration 不會互相覆蓋。

但同一份文件也明確標示:截至 2026-03-24,這個功能不再提供給新的 Cloud projects。既有已啟用的 Cloud projects 才繼續有 access。

所以書裡要用保守講法:

  • 如果你的既有 Cloud project(專案)有 Test and Live environments,可以用它隔離 development 與 production(正式上線)data。
  • 如果你的新 project(專案)沒有這個功能,不要假設 Lovable 提供內建 staging。
  • 對正式產品,仍要建立自己的測試策略,例如 separate project(專案)、Supabase branching、備份、SQL 審查、手動 migration 流程。

這不是小細節。後端 schema 改動可能影響真實資料。你要把「在哪裡測試」當成後端設計的一部分。

提示詞範例

範例 1:後端資料模型規劃

實作前,請先規劃後端資料模型。

產品:
LaunchNote 協助小型 SaaS 團隊發布公開更新日誌。

物件:
- 專案
- 更新日誌項目
- 標籤
- 附件

規則:
- 一個專案有多筆項目。
- 項目可以是草稿或已發布。
- 只有已發布項目會出現在公開更新日誌頁面。
- 草稿只供內部使用。
- 項目可以有標籤。
- 項目可以有一張封面圖片。

請提出:
- 資料表與欄位。
- 關聯。
- 索引。
- 必填欄位。
- RLS 假設。
- 這次要實作什麼,哪些留到之後。

暫時不要修改應用程式。

為什麼有效:

  • 它先建立資料模型,再進入實作。
  • 它把狀態與公開規則寫清楚。
  • 它要求 RLS(Row Level Security,列層級安全) assumptions,避免安全問題被延後到看不見。

範例 2:實作 CRUD 與 公開頁面

請實作 LaunchNote 第一個使用 Supabase 的版本。

請建立:
- 更新日誌項目的儀表板清單。
- 新增項目表單。
- 編輯項目表單。
- 公開更新日誌頁面。

資料行為:
- 把項目儲存到 Supabase。
- 草稿只出現在儀表板。
- 已發布項目出現在公開更新日誌頁面。
- 公開項目依 published_at 由新到舊排序。
- 顯示載入、空白和錯誤狀態。

完成整合前,請先顯示我需要執行的 SQL。

為什麼有效:

  • 它把 UI(使用者介面)flow 和 data behavior 綁在一起。
  • 它要求 loading、empty、error states。
  • 它提醒 Lovable 先交代 SQL,而不是默默假設 database 已經改好。

範例 3:Storage 上傳

請為更新日誌項目新增封面圖片上傳功能。

需求:
- 每筆項目可上傳一張圖片。
- 把檔案儲存在後端 Storage。
- 在項目資料列儲存圖片路徑或 URL。
- 顯示上傳進度。
- 上傳失敗時顯示清楚的錯誤訊息。
- 已發布項目要顯示圖片。
- 保持行動版版面穩定。

安全:
- 除非必要,不要讓整個 Storage Bucket 公開。
- 請說明哪些檔案需要公開讀取權限,以及原因。

為什麼有效:

  • 它把檔案、資料列與 UI(使用者介面)狀態一起處理。
  • 它要求 Lovable 解釋 public access。
  • 它避免把 bucket 公開當成預設做法。

範例 4:Edge Function 邏輯

請建立用來發布更新日誌項目的後端函式。

當草稿發布時:
- 驗證 title 和 content 不可為空。
- 把 status 設為 published。
- 如果缺少 published_at,請補上。
- 根據 content 產生簡短摘要。
- 把 summary 儲存到資料庫。
- 任何步驟失敗時,請回傳結構化錯誤。

這段流程請放在後端邏輯。
不要在前端程式碼暴露私人憑證。

為什麼有效:

  • 它把重要狀態轉換集中在後端。
  • 它指定 validation、database update 和 error handling。
  • 它把 secret exposure 的限制講清楚。

範例 5:RLS(Row Level Security,列層級安全) 規劃

請檢查目前的資料庫 Schema,並提出 RLS Policy。

存取需求:
- 公開訪客可以讀取已發布項目。
- 公開訪客不能讀取草稿。
- 通過身分驗證的使用者只能管理自己所屬專案的項目。
- 使用者不能讀取或修改其他團隊的專案。

請提供:
- 缺少的所有權或成員關係欄位。
- select、insert、update、delete Policy。
- 每個 Policy 的測試案例。
- 目前 Schema 的風險。

等我核准計畫後,再套用變更。

為什麼有效:

  • 它讓安全設計先被審查。
  • 它要求 test cases,而不是只有 policy SQL。
  • 它避免 Lovable 直接套用你還沒理解的存取規則。

實作練習

用 Lovable + Supabase 或 Lovable Cloud 替 LaunchNote 建立第一版後端。

Round 1: Data model

用 Pattern 1 請 Lovable 規劃資料模型。

預期結果:

  • 有清楚的 table proposal。
  • 有 entry draft / published 狀態。
  • 有 project(專案)與 entry 的關聯。
  • 有 RLS(Row Level Security,列層級安全) assumptions。

Round 2: CRUD

用 Pattern 2 實作 dashboard(儀表板)、create form、edit form 和 public changelog。

預期結果:

  • 可以建立 entry。
  • 可以儲存 draft。
  • 可以發布 entry。
  • public page 只顯示 published entries。

Round 3: Storage

用 Pattern 3 加入 cover image upload。

預期結果:

  • 可以上傳圖片。
  • 圖片 path 或 URL 存在 entry row。
  • public changelog 顯示圖片。
  • 上傳錯誤有可讀訊息。

Round 4: Security review

用 Pattern 5 產生 RLS(Row Level Security,列層級安全) plan。

預期結果:

  • 你知道目前 schema 少了哪些 ownership 欄位。
  • 你知道 public read 和 internal write 的差異。
  • 你有一組可以在第 10 章繼續實作的權限測試。

常見錯誤

錯誤 1:從 UI(使用者介面)推資料表

UI(使用者介面)可以幫你發現欄位,但不能取代資料模型。先畫資料物件,再做表單。

錯誤 2:忽略 draft / published 狀態

很多內容型產品都需要狀態。沒有狀態欄位,你很難安全地分開 internal 和 public。

錯誤 3:把 secret 放進前端

任何進 browser bundle 的值都不能當 secret。需要 private key 的邏輯請放到 backend(後端)function。

錯誤 4:太早做 Realtime

Realtime 很吸引人,但會增加複雜度。除非產品真的需要即時同步,先用一般讀寫就好。

錯誤 5:沒有測試 RLS(Row Level Security,列層級安全)

RLS(Row Level Security,列層級安全) 不是「有打開」就安全。你要用不同角色、不同資料狀態、不同 project(專案)測試。

錯誤 6:在真實資料上試 schema

schema change 可能破壞 production(正式上線)。做正式產品時,要先備份、測試、審查 SQL,再 publish 或 migration。

When not to add backend(後端)yet

不是每個 project(專案)都要一開始接 Supabase。

先不要加 backend(後端)的情境:

  • 你還在驗證 landing page 文案。
  • 你還不知道核心資料物件。
  • 你只是要做視覺 prototype(原型)。
  • 你還沒決定 auth(驗證)model。
  • 你沒有時間審查資料存取規則。

Lovable 很容易讓你快速加上 backend(後端),但產品決策還不穩時,太早加資料庫會讓你背負遷移成本。

上線前檢查清單

  • [ ] 是否已明確選擇 Supabase project(專案)或 Lovable Cloud?
  • [ ] 是否理解 backend(後端)region、usage、export、移除與 ownership 的影響?
  • [ ] 是否有資料模型 plan?
  • [ ] 每張 table 是否有清楚用途?
  • [ ] 重要關聯是否有 foreign key 或等價設計?
  • [ ] draft / published 等狀態是否明確?
  • [ ] public page 是否只讀取應公開的資料?
  • [ ] dashboard(儀表板) 是否處理 loading、empty、error states?
  • [ ] Storage bucket 是否沒有被不小心公開?
  • [ ] 檔案 URL 或 path 是否正確存到資料列?
  • [ ] Realtime 是否只用在真正需要即時同步的地方?
  • [ ] Edge Functions 是否承載前端不該執行的邏輯?
  • [ ] backend(後端)secrets 是否放在 Secrets,而不是前端 code?
  • [ ] VITE_ variables 是否只包含可以公開的 build-time values?
  • [ ] 是否已產生並審查 RLS(Row Level Security,列層級安全) plan?
  • [ ] 是否已準備第 10 章要用的 user、role、membership 權限模型?
  • [ ] 上線前是否會跑 security scan 並測試 RLS(Row Level Security,列層級安全)?

延伸閱讀

名詞解釋與延伸提問

  • Supabase:提供 PostgreSQL、驗證、儲存與 Edge Functions 的後端平台。
  • Lovable Cloud:Lovable 管理的全端雲端環境,包含資料庫、驗證、儲存與後端能力。
  • Schema:資料表、欄位、關聯與限制的資料庫結構。
  • RLS(Row Level Security,列層級安全):Row Level Security,資料庫層級的列權限控制。

如何問延伸問題

讀完本章後,建議用自己的專案情境繼續追問 Lovable 或本書作者:

  • 「請根據我的專案,重寫本章的檢查清單。」
  • 「我的目前版本最可能在哪三個地方失敗?」
  • 「請把本章流程改成我下一次可以直接貼上的提示詞。」
  • 「如果我要在兩天內完成 V1,哪些範圍應該先刪掉?」

嗨!我是 Wolke,曾任 Google Developer Expert(GDE,2019–2023)LINE API Expert。我熱衷於研究 AI Agent、n8n 自動化工作流及全端開發架構,致力於將 AI 技術轉化為實際的生產力工具。

如果你喜歡這篇文章,歡迎透過以下方式與我交流,獲取更多技術實戰內容:

📚 技術著作《實用的 Gemini API 開發點子書》,帶你運用 Gemini App、Google AI Studio、Gemini CLI 與 Antigravity IDE,打造 AI Agent 與實用產品。

📝 技術部落格:歡迎追蹤我的 Medium,我會持續分享 Agentic Automation、架構設計與實際開發的踩坑心得。

🎤 技術講座:我持續受邀至技術社群及研討會,分享 AI Agent、自動化工作流、DevOps 與全端開發實戰。曾於 2026 年 6 月 26 日的 DevOpsDays Taipei 2026 主講「不再只是寫腳本!讓 AI 代理人成為你的 SRE 最佳夥伴」工作坊。

如果你的企業、社群或學校正在尋找相關主題講者,歡迎私訊與我聯繫、洽談講座合作!

🎁 免費送 Lovable 額度給讀者!

我每個月會開放 10 個名額,每人 50 點 Lovable 額度,讓大家實際動手打造自己的網站或 App。

參加方式:

  1. 訂閱本系列文章
  2. 分享任一篇系列文章
  3. 私訊分享截圖及你的 Lovable 帳號 Email

確認後,我會邀請你加入 Lovable workspace 並設定 50 點額度。名額有限,送完為止!


上一篇
第 8 章:從首頁到產品體驗
系列文
Lovable: 地球上最強的 AI 生成全端網站Agentic開發實戰9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言