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:
- Create a file in
content/posts. - Add frontmatter and Markdown.
- Preview with
pnpm dev. - 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
| Content | Source | Result |
|---|---|---|
| Metadata | YAML frontmatter | Typed post data |
| Body | Markdown | Semantic HTML |
| History | Git | Reviewable 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.