在開發一個具備 「使用者登入」 與 「個別資料紀錄」 的應用時,傳統作法通常需要自行設計登入系統、處理使用者驗證、建立資料庫結構,甚至還要配置檔案儲存空間與伺服器架設,對我這樣的新手來說門檻頗高。
而我這次要打造的是一個 PWA 兒童任務管理平台,核心功能包括:
以我當時的狀況來說,若要從零開始設計後端與登入系統,不僅耗時,還會在安全性、擴充性上遇到許多挑戰,如果有簡單可用的方案是再好不過。
這時,Firebase 成了我最佳的解決方案。
Firebase 是 Google 提供的一站式後端服務,對於像我這樣的非網頁後端工程師來說,它的「開箱即用」特性非常吸引人。
它不僅支援多種登入方式(Email、Google、Facebook 等),還內建了 Firestore 資料庫、檔案儲存空間、網站 Hosting、Google Analytics 串接,甚至還有 雲端 Functions等進階功能。
雖然市面上也有 Supabase、Appwrite 等類似服務,但在我比較之後,選擇了新手友善,較易上手的Firebase。
尤其當我搭配 AI 來開發時,只要給它清楚的需求,AI 完全可以直接生成可用的 Firebase 相關程式碼,讓我省下了大量摸索 API 的時間。
當然,Firebase 也不是完美無缺。它在:
可能會有成本與效能問題。
不過對我這個專案而言,任務資料相對簡單,使用者數量也不會一次暴增(如果暴增也應該開心😄),因此這些限制對我影響不大。反而,它的簡單設定與即時同步功能,讓我能更快把重心放在產品體驗上,而不是陷入後端架構的泥淖。
在確定使用 Firebase 後,我開始進行平台的核心功能開發 —— 任務資料的儲存與讀取。
過程很有趣,因為我幾乎是 「全程由 AI 幫我撰寫程式」,我只需要負責和 AI 發想/討論功能和協助驗證。
我先請 AI 告訴我如何註冊 Firebase 專案、做一些基本設定,並取得 API Key。
AI 也提醒我,為了安全性,不要直接在程式碼中暴露 API Key,而是應該將它放在 .env
檔案中,並在程式中透過環境變數引用。
接著,我把需求描述給 AI:
「我想要一個可以新增任務、讀取任務清單,並依登入使用者區分資料的功能。」
AI 隨即幫我生成了使用 Firestore 的資料存取程式碼,並教我如何在 React 環境中初始化 Firebase。幾次嘗試後,我就完成了資料庫與前端的連線,能夠在瀏覽器中成功新增、讀取任務資料,這個瞬間真的讓我有種「哇,原來後端可以這麼快接好」的感覺。
為了確保不同使用者的資料不會互相影響,我同時啟用了 Firebase Authentication(身份驗證服務)。
Firebase 提供了一個非常重要的功能——安全規則(Security Rules)。透過這些規則,我可以設定成「只有登入的使用者,才能存取自己帳號底下的資料」,即便前端程式邏輯出錯,也能避免資料外洩的風險。
這部分我也是請 AI 協助產生合適的規則,依我的資料結構稍微調整。很快地,我的任務資料就能做到完全依帳號隔離,安全性上也更放心。
service cloud.firestore {
match /databases/{database}/documents {
// 只要最上層的 userId 匹配,就允許存取該用戶下的所有數據
match /users/{userId}/{collection}/{docId} {
allow read, write: if request.auth != null &&
request.auth.uid == userId &&
isAllowedUser();
}
}
}
Firebase 有免費方案,對於使用者數不多、資料量不大的專案來說,免費額度已經非常夠用。我原本也是打算用免費方案,但後來因為啟用了一些額外功能(像是 Cloud Functions),所以升級到了付費方案。
幸好 Firebase 在付費後仍提供前三個月 300 美金的額度,而且每天都有免費使用量。如果你的應用還在成長初期,除非用量非常大,否則幾乎不用擔心會超支。
在這一階段,我靠著 AI 的引導與 Firebase 提供的整合服務,很快地完成了平台最基礎的登入與資料存取功能。
如果沒有 Firebase,我可能得花好幾週自己搭後端、設計 API、處理安全機制,還要想辦法部署。但現在,這些步驟都被極大簡化,讓我能專注在產品核心體驗上。
下一篇文章,我會分享除了登入與資料庫之外,我在 Firebase 上還用到了哪些功能,以及它們在這個兒童任務管理平台中扮演了什麼角色。
敬請期待下一篇:《AI 助我用 Firebase 打造兒童任務管理平台 (下集)》