Adding a new post takes about 30 seconds.
1. Create the file
Create a file at `src/content/blog/.mdx`. The filename (without `.mdx`) becomes the URL: `/blog/`.
2. Add the frontmatter
```md --- title: "My great post" description: "One-sentence summary used for cards + SEO." date: "2026-05-12" author: "Your name" tags: ["release", "tutorial"] # Optional fields: # updated: "2026-05-20" # date of last meaningful edit # cover: "/blog/my-post-cover.png" # absolute or site-relative; becomes og:image + twitter:image --- ```
The filename (`my-great-post.mdx`) is also the URL slug, so use lowercase letters, numbers and hyphens only — the build will fail loudly if you don't.
3. Write the body
Plain Markdown works (tables, code fences, lists). Because it's **MDX**, you can also import and embed any React component from the codebase:
```mdx
Click me ```
Live example, rendered from this very file:
Click me
4. Push
`git push` → CI builds the new image → watchtower on the VPS pulls it within ~5 minutes → your post is live at `/blog/`.
No database, no admin panel — your git history _is_ the CMS.