How to write blog posts in Coding Capybaras

A quick tutorial covering frontmatter fields, MDX body conventions, and the publish flow. The same mechanism you're reading this post through.

· Coding Capybaras

The blog you're reading is part of the Coding Capybaras boilerplate. Every deploy ships with it. This post walks through how to publish your own posts — the same way this site does it.

The pattern

Coding Capybaras uses a file-based MDX blog:

  • Posts live as .mdx files in website/content/blog/
  • Each file's name (minus the .mdx) becomes its URL slug — my-first-post.mdx becomes /blog/my-first-post
  • Frontmatter at the top drives SEO, listing order, and publish state
  • The body is markdown (with MDX extensions if you want them)

No database. No admin GUI. No CMS to keep updated. Posts are version-controlled with the rest of your code, and a git push is your publish action.

This is intentional. The boilerplate is built for founders using AI coding tools — Claude Code, Cursor, Cowork. Your AI assistant writes a post, saves it as a file, commits it. There's no admin form to wrestle with.

The frontmatter

Every post has a YAML frontmatter block at the top.

Required fields:

  • title — the post title (also used as the <h1>)
  • description — short summary (used as <meta description> for SEO and on the index)
  • date — publish date in YYYY-MM-DD format

Optional fields:

  • author — defaults to your site name if omitted
  • tags — array of tag strings (no tag index pages yet, but the frontmatter is captured)
  • updated — date of last update; appears in JSON-LD as dateModified
  • published — defaults to true. Set to false to keep a draft from appearing on the index or sitemap

The build fails on malformed frontmatter — intentional, so broken posts can never silently deploy.

Writing the body

Standard markdown. Use ## and ### for section headings (your title is the page's only <h1>). Bold, italic, inline code, and links all work. Fenced code blocks render with syntax highlighting:

function example() {
  return "hello, world";
}

Lists, blockquotes, and tables all work as expected.

Publishing

  1. Create a new .mdx file in website/content/blog/
  2. Add the frontmatter and body
  3. git commit and git push
  4. Vercel auto-deploys
  5. Your post is live at /blog/your-slug and added to your sitemap

From draft to live in about 60 seconds.

What ships for SEO

Every post automatically gets:

  • A <title> and <meta description> populated from frontmatter
  • Open Graph tags (og:type=article, published/modified times, author)
  • Twitter card metadata
  • JSON-LD Article schema with publisher = your branding's legal entity name
  • A canonical URL
  • Inclusion in your sitemap.xml

You don't have to configure any of it — it ships in the boilerplate.

What's next

Obvious extensions for when you outgrow v1:

  • RSS / Atom feed at /blog/feed.xml
  • Tag index pages at /blog/tags/[tag]
  • Pagination on the index page
  • Cover images and dynamic OG image generation
  • Custom MDX components (callouts, embeds)

None ship in v1 — deliberately deferred until there's a real need.

Happy writing.