← All posts

Hello, Markdown

A living style guide for the Markdown syntax supported by this blog.

This post is a visual reference for the Markdown supported by the blog. It includes standard Markdown plus GitHub Flavored Markdown (GFM).

Text styles

Write bold text, italic text, or both at once. GFM also supports strikethrough. Use inline code for filenames, commands, and identifiers.

Links can have descriptive text, and plain URLs such as https://nextjs.org are linked automatically.

A third-level heading

Headings create a readable hierarchy inside longer posts.

A fourth-level heading

The post title serves as the first-level heading, so article sections normally start at level two.


Lists

An unordered list:

  • Markdown files are the source of truth.
  • Git records every change.
    • Nested bullets work too.
    • Indentation creates the nested level.
  • Next.js renders the result.

An ordered list:

  1. Create a file in content/posts.
  2. Add frontmatter and Markdown.
  3. Preview with pnpm dev.
  4. Review, commit, and deploy.

A task list:

  • Render local Markdown
  • Support GitHub Flavored Markdown
  • Highlight fenced code
  • Write the next post

Blockquotes

The filesystem is the content API.

Plain text remains readable even without the website.

Tables

ContentSourceResult
MetadataYAML frontmatterTyped post data
BodyMarkdownSemantic HTML
HistoryGitReviewable changes

Code

Inline code looks like getAllPosts(). Add a language after the opening fence to enable syntax highlighting for a code block:

type WorkflowStep = "write" | "review" | "deploy";

const workflow: WorkflowStep[] = ["write", "review", "deploy"];

for (const [index, step] of workflow.entries()) {
  console.log(`${index + 1}. ${step}`);
}

An unlabelled fence remains plain text:

content/posts/my-next-post.md

That covers the syntax most posts will need while keeping the source easy to read and edit directly.