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 設定
- 分析工具與流量觀察
- 更好的圖片管理流程
- 更有辨識度的互動與過場動畫
現在這個版本最重要的,不是把所有功能一次做滿,而是先把一個可以持續寫、持續改、持續管理的基礎搭起來。等這個基礎穩了,之後不管是內容、設計還是功能,都可以慢慢往上加。