poyosi.com
poyosi

サイトを Payload CMS に移行しました

microCMS から Payload CMS へ移行しました。タグ、アーカイブ、RSS、下書きプレビューを追加しています。

このサイトの記事管理を microCMS から Payload CMS に移行しました。見た目はほとんど変わっていませんが、裏側はひととおり作り直しています。

構成

公開サイトと CMS は別々のプロジェクトとして動いています。公開サイトは記事を GraphQL で読み取り、記事を公開すると CMS から通知が飛んでキャッシュだけが更新される、という形です。

  • 公開サイト: Next.js(App Router / ISR)
  • CMS: Payload CMS(cms.poyosi.com)
  • データベース: Neon Postgres
  • 画像: Vercel Blob

記事のデータベースは普段眠っていて構わない設計にしました。ページはキャッシュから配信され、公開したときだけ必要な場所が更新されます。

増えたもの

  • タグ(記事の下のタグから一覧に飛べます)
  • 公開日ごとのアーカイブ
  • RSS フィード
  • 下書きプレビュー
  • コードのシンタックスハイライト

ハイライトはこんな見え方になります。

const posts = await getPostsPage(1)

for (const post of posts.items) {
  console.log(post.publishedAt, post.title)
}

URL について

記事の URL は /posts/{数字} の形になりました。タイトルを変えても URL は変わりません。旧 /blog 以下は /posts へリダイレクトしています。

移行にあたって以前の記事は引き継いでいないので、ここが最初の1本です。

  • poyosi avatar
    poyosi

    Web エンジニア。Next.js と TypeScript をよく書いています。 東京在住。