第四回嘗試——用 Google Firebase 打造網站 CMS

一個多月前,心血來潮逛 YouTube 節目 Fireship 的官網,看到首頁出了 Next.js 結合 Google Firebase 的課程,而且課程大綱清晰,並以建置基礎的部落格平台為目標,再加上我很熟悉他淺顯、風趣又實用的講解風格,毫不猶豫就下單了!

Image

原先想說看看就好,沒想到,看著看著沒忍住就動手為網站架設 CMS 後台了!

最近學習新事物都用這種方式起步,在腦海中浮現模模糊糊的意念時,為了避免目標導向帶來的壓力,用玩玩看試試看的心態,往往就做出成果了。

為什麼要自建 CMS?

這是我的自架網站後,對 CMS 的第 4 次嘗試,目前嘗試過的都不滿意,無論是文字編輯器、內容可操作度、載入速度或介面風格,總會有個地方在我的工作流中成為令人難以接受的阻礙。

前幾次分別嘗試了這幾種免費的方法:

  1. 本地 markdown 推送到 GitHub
  2. 以 Notion API 獲取 Notion 內容
  3. 將 Strapi CMS 部署在 Heroku

我觀察自己學習新知的方式,不經歷過一次「白手起家」,沒辦法接受完全使用專業的預製工具。這背後的思考邏輯,應該是認為透過自己動手可以對大框架和技術手法理解得更透徹,能夠深刻體會概念化為現實的困難與成就感,和使用模組化工具所帶來的效益。

為什麼 Google Firebase?

第一,Firebase 為網站後端各種功能提供模組化的解決方案,我只需要設計使用者的使用流程、思考資料的串接邏輯,就可以在同一個生態圈內完成服務串接,對於新手來說非常友好;

第二,免費方案容量巨大,基本上傳達的意思就是:「如果做大了,我再來分一杯羹」;

第三,作為 Google,週邊配套豐富,技術文件清晰有條理,我不擔心會有解決不了的問題。

使用的服務

  • Authentication:登入後台的驗證機制。
  • Cloud Firestore:NoSQL,數據存儲。
  • Storage:圖片和檔案存儲。

介面設計

寫作環境

功能:標題、markdown 內文、markdown 預覽、同步、刪除貼文、圖片上傳、發布管理。

Image

發布設定

功能:發布日期、slug、文章分類、發布開關。

套入 Material UI 組件。

Image

文章列表

視圖:草稿、已發布、全部。

功能:新增文章、編輯文章。

Image

網站設定

範圍:首頁與部落格共 2 個頁面的標題與敘述。

Image

感想

辛辛苦苦做完之後,我才有兩大發現,其一是原來整個系統裡最困難的是文字編輯器的架構設計;其二是原來我最在意的是文字編輯器的使用體驗

我心目中理想的文字編輯體驗是如 Craft、Notion、Heptabase 那樣以 block 為基礎單位的,太困難了,水太深!

回顧自建 CMS 的初衷是:給網站內容建立「單一資訊來源(single source of truth)」,我就不必在每次發布前複製貼上,到最後甚至忘了一篇經歷多次修改的文章到底哪份才是最新的版本。

第四代 CMS 系統最終仍失敗了,目前回歸複製貼上模式。

不過,種子埋下很久了,繼續探索!

Image
發布於
更新於