Aerea LabsAerea Labs
Skip to content
  • announcement

Welcome to the Next.js Boilerplate Blog

Why we added a blog to an already opinionated boilerplate — and what you can expect from it.

Published on

Why a blog on a boilerplate?

Most boilerplates ship a landing page and a dashboard, then stop. Developers clone the repo, replace the hero copy, and immediately hit a wall: where does the narrative content live? A pricing FAQ, a deep-dive on the audit chain, a migration guide from PGlite to Neon — none of that fits a changelog entry, and none of it belongs in the README.

This blog solves that problem. It is file-based, type-safe, and zero-dependency from the user's perspective: drop an .mdx file into content/blog/, add frontmatter, and the post is live at /blog/your-slug the next time the dev server restarts.

What powers it

Under the hood, Velite reads every .mdx file in content/blog/, validates the frontmatter against a Zod schema, and emits a fully-typed data module at build time. The page components consume that module with no runtime file-system access — which means the blog works identically on Vercel Edge, Fly, and a plain Node server.

The schema enforces:

  • slug — derived from the filename, guaranteed unique within blog/
  • title — 120-character cap to keep nav bars sane
  • description — 280-character cap (one tweet; enough for an SEO meta tag)
  • date — ISO 8601, sorted descending on the index
  • tags — free-form strings; the index page renders a tag-filter dropdown
  • drafttrue posts are collected by Velite but filtered out on the public index

What to expect here

Posts will cover three themes:

  1. Stack decisions — why a particular library was chosen over its alternatives, with concrete trade-offs rather than marketing copy.
  2. Migration guides — step-by-step walkthroughs for common post-clone tasks: swapping PGlite for Neon, adding a Stripe webhook, wiring a new OAuth provider.
  3. Boilerplate updates — when a wave lands with a breaking change, the blog post is the canonical explanation. The changelog entry gives you the diff; the blog post gives you the why.

Subscribe via the RSS feed to get notified without social media noise.

Share