# Blog posts

Add a `.md` file in `frontend/src/blog/posts` and it will appear on `/blog` after the Vite dev server refreshes or the site is rebuilt.

Use this front matter at the top:

```md
---
title: Your post title
date: 2026-06-22
author: Heidi
excerpt: Short one-line summary for the blog list.
---

Write the post here.
```

The URL slug comes from the filename, so `new-feature.md` becomes `/blog/new-feature`. You can override it with `slug: custom-url`.

## Markdown examples

Headings:

```md
# Huge heading
## Section heading
### Small heading
```

Paragraphs:

```md
This is a normal paragraph.

Leave a blank line to start a new paragraph.
```

Bullet points:

```md
- First bullet
- Second bullet
- Third bullet
```

Numbered lists:

```md
1. First step
2. Second step
3. Third step
```

Blockquotes:

```md
> This text gets shown as a quote/callout.
```

Links:

```md
[The homepage](/)
[Discord](https://discord.com/)
```

Inline code:

```md
Use `frontend/src/blog/posts` for blog posts.
```

Code blocks:

````md
```js
console.log('hello from the blog')
```
````

## Images and videos

Put local images and videos in `frontend/public`. Files in there are served from the site root.

Example local file paths:

```txt
frontend/public/images/news/screenshot.png
frontend/public/videos/news/launch.mp4
```

Embed an image:

```md
![Image caption or alt text](/images/news/screenshot.png)
```

Embed a local video:

```md
@[video](/videos/news/launch.mp4)
```

Embed YouTube or Vimeo:

```md
@[youtube](https://www.youtube.com/watch?v=VIDEO_ID)

@[vimeo](https://vimeo.com/123456789)
```

YouTube embeds use the privacy-friendly `youtube-nocookie.com` player. Direct video files support `.mp4`, `.webm`, and `.ogg`.
