技術個案研究

作品集架構

robinhuang.nz 是一個多語言 Astro 作品集,既是招聘方可讀的履歷,也是機器可讀的公開資料。網站以靜態生成為主,配合清晰的項目狀態標籤、只公開的 JSON,以及有文件記錄的安全邊界。

公開網站邊界

靜態 Astro 網站發布作品集頁面、本地化路由、網誌內容及只讀 JSON 端點,並不公開私人訊息、管理記錄、分析數據、密鑰或倉庫檔案。

  • Astro 靜態生成
  • 英文作為源內容
  • EN、zh-CN、zh-HK、KO 路由
  • 根 JSON 及版本化 API 路由

機器可讀作品集

公開 JSON 與頁面出自同一份源數據,因此項目狀態、認證狀態及原型注意事項始終保持一致。

  • /profile.json
  • /cv.json
  • /projects.json
  • /certificates.json
  • /.well-known/portfolio.json
  • /public/search-index.json

助手安全模型

作品集助手只限存取公開網站內容及來源連結。所有請求都會經過驗證及限流,一旦索取私人訊息、密鑰、提示詞、令牌或管理資料即予拒絕。

  • 只使用公開來源索引
  • 輸入長度及標記檢查
  • CORS allowlist 支援
  • 逾時後回退至有據可依的本地回答

安全回應標頭

網站維護一套有文件記錄的 CSP、HSTS、referrer policy、content-type 保護、frame 限制及 permissions policy。內聯 script 只用於靜態 JSON-LD 及主題初始化。

  • default-src self
  • 邊緣層 frame-ancestors none
  • strict-origin-when-cross-origin referrer
  • Permissions-Policy 禁用感應器及支付 API

性能預算

核心頁面避免過重的客戶端渲染。圖片、CSS、靜態 JSON 及頁面路由都會在發布前經 production build 檢查。

  • 靜態 HTML 優先
  • 沒有公開寫入路由
  • 短快取 JSON 與 revalidation
  • 構建期 API 及安全測試

部署流程

  1. 1

    源數據

    作品集、CV、項目、認證及本地化內容都保存在有型別定義的本地原始碼檔案中。

  2. 2

    Astro 構建

    構建輸出本地化 HTML、靜態 JSON、sitemap、OpenAPI 及 JSON-LD 元數據。

  3. 3

    靜態託管

    GitHub Actions 將靜態輸出發布到 S3 及 CloudFront,回應標頭由邊緣層控制。

  4. 4

    外部 API

    聯絡及作品集助手 API 是相互隔離的 serverless 服務,各自具備獨立的驗證、CORS、限流及私有儲存邊界。

Robin Huang · IT 系統及應用支援 | 軟件測試及自動化