From 57dce4c1308f839dfe8e0b25e5aeb3fcdd6c0d07 Mon Sep 17 00:00:00 2001 From: Bulent Yusuf Date: Mon, 27 Jul 2026 20:25:58 +0200 Subject: [PATCH 1/3] Create be-useful-nextjs-contentful-tailwind-blog An extension of Vercel's Next.js Blog with Draft Mode starter, developed into a complete personal publishing setup and shared under the same MIT licence. --- .../be-useful-nextjs-contentful-tailwind-blog | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 content/theme/be-useful-nextjs-contentful-tailwind-blog diff --git a/content/theme/be-useful-nextjs-contentful-tailwind-blog b/content/theme/be-useful-nextjs-contentful-tailwind-blog new file mode 100644 index 000000000..947e33002 --- /dev/null +++ b/content/theme/be-useful-nextjs-contentful-tailwind-blog @@ -0,0 +1,47 @@ +--- +title: "Be Useful | Next.js and Contentful Blog" +github: https://github.com/bulentyusuf/nextjs-blog-draft-mode +demo: https://nextblog.net/ +author: Bulent Yusuf +date: 2026-07-27 +ssg: + - Next +cms: + - Contentful +css: + - Tailwind +archetype: + - Blog + - Personal +description: >- + A statically generated personal blog on Next.js App Router and Contentful, + with draft mode and live preview, in-browser search, sidenotes set in the + margin, and on-demand revalidation so CMS edits go live without a redeploy. +--- + +# A personal blog built on Next.js and Contentful + +An extension of Vercel's Next.js Blog with Draft Mode starter, developed into a +complete personal publishing setup and shared under the same MIT licence. + +The content model is deliberately compact. A Post type backed by Author and +Category, plus a Code Block for embedded snippets, a Prompt Block for publishing +the generative-image prompt behind a cover, a Sidenote for asides set in the +margin, and a Page type for standalone pages. A Contentful export and a seed +script ship with the repo, so a fresh fork has content to render from the first +build. + +## Features + +* Static generation with on-demand revalidation, so CMS edits go live by webhook without a redeploy +* Draft mode and live preview for working on posts before they publish +* Site search that runs entirely in the visitor's browser via Pagefind, with no third-party service and no query leaving the page +* Syntax-highlighted code blocks with a copy button, highlighted at build time by Shiki +* Sidenotes that float into the right margin on wide screens and collapse behind their reference number on narrow ones, opening without JavaScript +* Per-post table of contents, reading time, image lightbox, and cross-page view transitions on cover images +* Light and dark colour schemes following the operating system preference +* Archive grouped by year, paginated home, category and author listings, and landing pages for each +* Sitemap, robots.txt, RSS feed, Open Graph and Twitter card metadata, and breadcrumb structured data +* Skip link, a single visible focus indicator across the site, and reduced-motion support +* Content Security Policy, HSTS, and Permissions-Policy headers set in `next.config.js` +* TypeScript throughout, with a vitest suite and a full build gating every pull request From 7cf64b4b6c0a331b8b4370ffb39b43ab2e171a37 Mon Sep 17 00:00:00 2001 From: Bulent Yusuf Date: Mon, 27 Jul 2026 20:43:55 +0200 Subject: [PATCH 2/3] Rename be-useful-nextjs-contentful-tailwind-blog to be-useful-nextjs-contentful-blog.md --- ...ntentful-tailwind-blog => be-useful-nextjs-contentful-blog.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/theme/{be-useful-nextjs-contentful-tailwind-blog => be-useful-nextjs-contentful-blog.md} (100%) diff --git a/content/theme/be-useful-nextjs-contentful-tailwind-blog b/content/theme/be-useful-nextjs-contentful-blog.md similarity index 100% rename from content/theme/be-useful-nextjs-contentful-tailwind-blog rename to content/theme/be-useful-nextjs-contentful-blog.md From 848275622b4a2cbfb06d74be27a3c3214c38dd39 Mon Sep 17 00:00:00 2001 From: Bulent Yusuf Date: Sat, 1 Aug 2026 23:06:33 +0200 Subject: [PATCH 3/3] Update be-useful theme entry: renamed repo, and tags The github URL still pointed at bulentyusuf/nextjs-blog-draft-mode. The repository has since been renamed to bulentyusuf/building-blocks; GitHub redirects the old URL, so it resolved and stayed wrong. Tags shipped after this entry was written and had no mention in it. Adds the Tag type to the content model paragraph alongside Browse Intro, which was also missing, and a feature line for the tag landing pages and glossary. Also notes that the vitest suite now includes automated accessibility checks over the rendered markup. Co-Authored-By: Claude Opus 5 --- .../theme/be-useful-nextjs-contentful-blog.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/content/theme/be-useful-nextjs-contentful-blog.md b/content/theme/be-useful-nextjs-contentful-blog.md index 947e33002..af44535ea 100644 --- a/content/theme/be-useful-nextjs-contentful-blog.md +++ b/content/theme/be-useful-nextjs-contentful-blog.md @@ -1,6 +1,6 @@ --- title: "Be Useful | Next.js and Contentful Blog" -github: https://github.com/bulentyusuf/nextjs-blog-draft-mode +github: https://github.com/bulentyusuf/building-blocks demo: https://nextblog.net/ author: Bulent Yusuf date: 2026-07-27 @@ -24,12 +24,12 @@ description: >- An extension of Vercel's Next.js Blog with Draft Mode starter, developed into a complete personal publishing setup and shared under the same MIT licence. -The content model is deliberately compact. A Post type backed by Author and -Category, plus a Code Block for embedded snippets, a Prompt Block for publishing -the generative-image prompt behind a cover, a Sidenote for asides set in the -margin, and a Page type for standalone pages. A Contentful export and a seed -script ship with the repo, so a fresh fork has content to render from the first -build. +The content model is deliberately compact. A Post type backed by Author, +Category and Tag, plus a Code Block for embedded snippets, a Prompt Block for +publishing the generative-image prompt behind a cover, a Sidenote for asides set +in the margin, a Page type for standalone pages, and a Browse Intro holding the +editable standfirst on each browse page. A Contentful export and a seed script +ship with the repo, so a fresh fork has content to render from the first build. ## Features @@ -40,8 +40,9 @@ build. * Sidenotes that float into the right margin on wide screens and collapse behind their reference number on narrow ones, opening without JavaScript * Per-post table of contents, reading time, image lightbox, and cross-page view transitions on cover images * Light and dark colour schemes following the operating system preference +* Tag landing pages and a glossary indexing every topic with its posts grouped beneath it, plus tag pills on posts and on every listing card * Archive grouped by year, paginated home, category and author listings, and landing pages for each * Sitemap, robots.txt, RSS feed, Open Graph and Twitter card metadata, and breadcrumb structured data * Skip link, a single visible focus indicator across the site, and reduced-motion support * Content Security Policy, HSTS, and Permissions-Policy headers set in `next.config.js` -* TypeScript throughout, with a vitest suite and a full build gating every pull request +* TypeScript throughout, with a vitest suite — including automated accessibility checks over the rendered markup — and a full build gating every pull request