Hello, world — first post on the Grow blog

Welcome to the Grow blog. This post is the reference template for editors. It’s written in Markdown (.md), which is the recommended format: it’s simple and doesn’t break on symbols like < or {.

How to create a new post

  1. Copy this file to site/src/content/blog/my-slug.md. The filename is the slug (the URL will be /blog/my-slug/).
  2. Replace the frontmatter with the new article’s data. All required fields are defined in site/src/content.config.ts, and the build fails if any are missing.
  3. Write the content below the closing three dashes of the frontmatter, in standard Markdown.

Frontmatter — fields

FieldRequiredNotes
titleyesMax 70 characters.
descriptionyesMax 160 (used in meta description and OG).
pubDateyesYYYY-MM-DD.
updatedDatenoIf the post was edited after publishing.
authoryesFull name or handle.
tagsnoList of strings; defaults to empty.
ogImagenoImage relative to the file (e.g. ./my-slug.jpg); if omitted, the site’s share image is used.
draftnotrue excludes it from the index and RSS. Defaults to false.

Headings, lists, code

## headings render as sections. Code blocks work like this:

function greet(name: string) {
  return `Hello, ${name}`;
}

Markdown vs MDX — when to use each

  • Use .md (this one) for 99% of posts. You can write free text without worrying about anything.
  • .mdx only if you need to import Astro components inside the article. Careful: in .mdx, the characters < and { are parsed as code, so writing something like companies with <500 employees or a {50%} discount breaks the build with an MDX error. That doesn’t happen in .md.

Next steps

  • Define editorial voice and style guidelines in plans/editorial-guide.md (TODO).
  • (Optional) create a default brand OG image at site/public/assets/blog/og-default.jpg and point to it in BlogPost.astro.