Rebuilding this site on Next.js 16, Firestore and Cloud Run

This site has been quietly running the same code since 2023. It now runs on Next.js 16, Firestore and Google Cloud, the same stack as the other projects I maintain, so I can spend time writing instead of patching dependencies.

What changed

  • Next.js 13 → 16, pages router → App Router, JavaScript → TypeScript.
  • Tailwind 3 → 4, same Spotlight design.
  • Contentful + MongoDB → Firestore, read through the Admin SDK.
  • Vercel → Cloud Run behind Firebase Hosting, deployed by GitHub Actions.

Code blocks still work

export async function getAllArticles(): Promise<ArticleMeta[]> {
  const snap = await db.collection("blog/posts/items").get();
  return snap.docs.map(fromDoc).filter(isPublished);
}
BeforeAfter
getStaticPropsasync Server Components
Contentful rich textMDX in Firestore