這個案子的背景

客戶是一位任職於有巢氏麻吉地產的房產顧問,同時也是內容創作者。她用 AI 生成了一個前台,想找人幫她加上後台管理,這樣她之後能自己修改影片資訊、物件資料、個人介紹等內容,不用每次都找人改。

前台是純靜態 HTML + CSS + JS,資料全部寫死在 main.js 裡,沒有任何後端。我的任務是:在不動視覺設計的前提下,幫她建立一個可用的後台管理系統,部署到 Netlify,完全免費。

架構決策:怎麼設計才不容易出 bug?

後台的入口我選擇用兩個頁面而不是一個,原因很實際:

如果用單一頁面做「顯示/隱藏」切換,HTML 其實已經全部載進來了,邏輯也容易混在一起。兩個頁面職責分離,出問題很容易定位。

💡 最終架構:Netlify(前台 + Functions)+ JWT 驗證 + JSONBin.io(資料儲存)

整個流程分四步

1

改造前台:從寫死資料改成呼叫 API

原本的 main.js 把所有影片和物件資料都硬寫在檔案裡,我把它改成啟動時先呼叫 /api/data,拿到資料後再渲染。這樣前台的視覺完全不變,只是資料來源從本地換成 API。

2

建立後台管理介面

後台包含四個功能區塊:個人資料、聯絡與社群連結、精選影片管理、超級A案物件管理。每個區塊都有對應的表單,影片和物件支援新增、編輯、刪除。所有修改完成後按一個「儲存所有變更」按鈕,統一送出。

3

後端:Netlify Functions 處理驗證和資料

寫了兩個 Function:auth.js 負責驗證密碼、回傳 JWT token;data.js 處理資料的讀取(GET,公開)和寫入(POST,需要帶 JWT)。密碼存在 Netlify 環境變數,不會出現在程式碼裡。

4

資料儲存:最後選了 JSONBin.io

這步踩了一個大坑(下面會說),最終用 JSONBin.io 免費方案解決。資料讀寫即時生效,不需要重新部署。

踩過的坑

坑 #1 — GitHub 上傳結構錯了
把資料夾整包上傳,多了一層路徑
解壓縮後直接把外層資料夾拖進去,導致 Netlify 找不到 public/ 資料夾。
解法:進入資料夾「裡面」,把內容物上傳,不要包含外層資料夾。
坑 #2 — Netlify Blobs 根本跑不起來
MissingBlobsEnvironmentError
原本打算用 Netlify 內建的 Blobs 儲存資料,但一直噴 MissingBlobsEnvironmentError,試了新版 context 語法也沒用。
解法:放棄 Blobs,改用 JSONBin.io 免費 API,反而更穩更簡單。
坑 #3 — Functions 套件沒裝到
502 Bad Gateway
jsonwebtoken@netlify/blobs 需要在 functions 資料夾裡放一個獨立的 package.json,Netlify 才知道要去那裡安裝套件。根目錄的 package.json 不夠。
解法:netlify/functions/ 裡加一個 package.json

最終費用一覽

服務用途費用
Netlify前台 + Functions 託管免費
GitHub程式碼版本管理免費
JSONBin.io資料儲存(每月 10,000 次讀寫)免費
網域自訂網址(選填)約 NT$400–600 / 年

每月固定費用:NT$0。如果網站流量很大(每天超過 300 個訪客),JSONBin 才有可能需要升級,但那時候網站已經在幫客戶賺錢了。

這個方案適合誰?

做完這個案子,我覺得這套架構最適合:

共同條件是:需要自己能改內容不想每月付平台費內容相對固定(不需要購物車或會員系統)。

這次的收穫:整套流程跑通了,下次做同類型案子速度會快很多。有了這個 case 之後,同樣的服務可以往上報價。

如果你也想做一個這樣的網站

我的工作室有提供這項服務,包含前台設計 + 後台管理系統 + Netlify 部署,一次交付,之後你自己能管理。歡迎直接聯絡聊聊需求。