このサイト(orbis-pictus.jp) は、大きく分けて
data/
、
api/
、
frontend/
の3つのレイヤーで構成されています。
orbis-pictus.jp/
├── data/ # コンテンツのソースファイル(YAML + Markdown)
├── api/ # Rust / Axum による REST API サーバー
├── frontend/ # Deno + Preact による SSG
└── www/ # 生成された静的ファイル(PHP)
ビルド時の流れは以下の通りです。
data/
以下にあるコンテンツファイルを
api/
が読み込む
api/
が JSON として返す
frontend/
が API を叩いて静的ファイルを生成し
www/
に書き出す
以前はデータの取得、加工からHTMLの生成までを一つのシステムの中に混在させていたのですが、コードの見通しが悪く、コンテンツを追加しづらかったため、改修しました。
記事・用語集・観察記録などすべてのコンテンツが置かれています。データは全てテキストファイルで、YAMLヘッダーをもつMarkdownファイルが主です。
過去のバージョンでは全てのデータをMySQLに格納していました。
しかし、運用を続けていく中で以下の理由から、現在はテキストファイルに落ち着いています。
YAMLヘッダーに持つメタデータの構造などが変わったときは、一括で処理するスクリプトで書き換えていました。
data/
├── articles/ # 生き物の図鑑記事(YAML)
├── blogs/ # ブログ記事(Markdown)
├── tech/ # 技術ブログ記事(Markdown)
├── observations/ # 観察記録
└──