Hello world! 網站創立技術分享

Hello world! 網站創立技術分享

簡單記錄一下這個網站是怎麼做起來的,還有我為什麼選這套技術。

我是怎麼把這個網站做起來的

最近把自己的網站慢慢補起來,除了放文章,也希望它可以當成一個會持續長大的個人空間。它不是單純的靜態 landing page,比較像是結合了個人介紹、文章系統、留言板和簡單後台的一個小型產品。

目前我用的技術組合是:

  • Frontend: React
  • Backend: FastAPI
  • Database: PostgreSQL
  • Deployment: Zeabur
  • DNS: Cloudflare

這套東西不算特別花俏,但對我現在要的網站型態來說很剛好。前端負責畫面和互動,後端處理 API 與管理邏輯,資料放在 PostgreSQL,部署交給 Zeabur,網域和 DNS 則交給 Cloudflare。

前端

前端是用 React 做的。這個網站有首頁、部落格、留言板,還有後台編輯介面,所以我一開始就沒打算只做成幾頁靜態 HTML。用 React 的好處很直接,整個 UI 可以拆成元件,之後要改版、加頁面、補互動效果都比較順。

像現在網站裡面這些東西,都是前端在處理的:

  • 頁面切換
  • 文章列表和文章閱讀
  • 留言板互動
  • 後台編輯體驗
  • Markdown 內容的呈現

我會選 React,不是因為它最潮,而是因為它很適合這種會一路長功能的網站。當網站不只是展示頁,而是開始有資料、有管理介面、有內容更新流程時,React 這種元件化前端就會舒服很多。

後端

後端使用 FastAPI。它負責提供網站需要的 API,像是:

  • 讀取個人資料
  • 取得文章列表與文章內容
  • 留言板送出與審核
  • 管理員登入
  • 後台編輯資料與文章
  • 圖片上傳與刪除

我自己很喜歡 FastAPI 的地方,是它不會太重,但又不是只能做很簡單的 demo。資料模型、驗證、路由、開發效率都很順,對這種中小型全端專案特別好用。

對個人網站來說,我想要的是一個夠乾淨、夠快、之後也撐得住的後端,不需要一開始就搬出太厚重的架構。FastAPI 剛好就是那個平衡點。

資料庫

資料庫我用的是 PostgreSQL。目前主要存的東西包含:

  • Profile 資料
  • Blog metadata 或文章內容
  • Guestbook 留言
  • 管理員相關資料

我沒有特別想把資料層做得很炫,但我希望它夠穩。PostgreSQL 幾乎就是這種情境下最自然的選擇,成熟、穩定,而且之後如果網站資料結構變複雜,也不用太早擔心撐不住。

部署

整個網站目前部署在 Zeabur。這個選擇其實很務實,因為我想把時間放在做網站本身,而不是花太多力氣處理基礎設施。

Zeabur 對這種全端小專案很方便,因為它有幾個我很在意的點:

  • 可以直接接 Git repo
  • 前後端與資料庫服務比較容易一起管理
  • 環境變數設定清楚
  • 對個人專案很省事

對我來說,部署流程如果太重,網站就很容易停在「做一半」。Zeabur 讓我可以把更新這件事變得簡單一點。

網域和 DNS

網域和 DNS 我是放在 Cloudflare。這層主要負責:

  • 網域解析
  • DNS 記錄設定
  • HTTPS / SSL 協助
  • 基本的流量保護與穩定性

這部分其實也沒什麼特別想炫技的,就是希望穩、設定清楚、之後好維護。Cloudflare 在這件事上很成熟,所以很自然就用了它。

整體怎麼串起來

整個網站大致上的流程是這樣:

1. 使用者透過 Cloudflare 網域進入網站
2. 請求被導到部署在 Zeabur 上的服務
3. React 前端載入畫面並呼叫 FastAPI API
4. FastAPI 讀寫 PostgreSQL 中的資料
5. API 回傳結果後,由 React 更新畫面

它不是很複雜的架構,但這正是我想要的。夠清楚、夠好維護,而且之後要慢慢補功能也不會卡住。

為什麼我最後選這套

我現在想做的,不是一個超大型平台,而是一個真的能持續更新的個人網站。對我來說,它至少要符合幾件事:

  • 容易維護
  • 容易擴充
  • 寫作與展示都方便
  • 能支援後台管理
  • 可以快速部署更新

React + FastAPI + PostgreSQL + Zeabur + Cloudflare 這個組合,剛好就是一套很務實的答案。每一層都不會太重,但也都足夠認真,適合這個網站現在的樣子。

接下來還想補什麼

這個網站現在還在持續長大,接下來我還想慢慢補這些東西:

  • 更完整的文章編輯體驗
  • 更細的 SEO 設定
  • 分析工具與流量觀察
  • 更好的圖片管理流程
  • 更有辨識度的互動與過場動畫

現在這個版本最重要的,不是把所有功能一次做滿,而是先把一個可以持續寫、持續改、持續管理的基礎搭起來。等這個基礎穩了,之後不管是內容、設計還是功能,都可以慢慢往上加。