開発ブログの検索・絞り込み・ページネーション機能を実装した

概要

公開ブログ/blog)と管理画面(/admin/blog)に対して、複数の機能を同時に実装した。主に検索・絞り込み・ページネーション・日時表示の改善が中心となる。


実装した機能一覧

公開ブログ(/blog

管理画面(/admin/blog

編集画面(/admin/blog/edit/admin/blog/new


設計上の判断

フィルタリングはサーバーサイドで処理

URLパラメータ(?q=...&category=...&page=2)を Astro の SSR ページで受け取り、D1 クエリの前後でフィルタリングを適用する構成とした。クライアントサイドJSによる動的フィルタリングは採用しなかった。理由は以下のとおり。

カテゴリテーブルは作成しない

カテゴリはblog_posts.categoriesにJSON配列として格納されており、別途カテゴリ管理テーブルを用意することも検討した。ただし、今回の要件(既存カテゴリのサジェスト・新規追加)はテーブルなしでも実現できるため、実装の複雑さを抑えるためにテーブル新設は行わなかった。


セキュリティ観点


動作確認

ビルドは npx astro build で成功。Cloudflare Pages のプレビュー環境に対してデプロイ済み。