↩ back to the notebook

Hello, world

Welcome to your new site. If you can read this, the build engine parsed this file's frontmatter, rendered the Markdown below into HTML, and a component wrapped it in a layout — all without you writing any HTML.

Where things live

content/   what you write — posts, pages, images   (the contract)
core/       the build engine — parses content, renders the site
site/      how it looks — layout, styles, branding  (yours to change)

To publish a new post, drop a Markdown file in content/posts/. The filename becomes the URL slug, so content/posts/hello-world.md is served at /posts/hello-world/.

Frontmatter

Every post starts with a small block of typed metadata:

---
title: "Hello, world"        # required
description: "One-liner"     # optional — used for SEO, the listing, and RSS
date: 2026-01-10T09:00:00Z   # required — drives sorting and the year grouping
tags: [meta, getting-started]
draft: false                 # drafts are hidden in production builds
---

That's the whole contract. Get it wrong and the build tells you — see Content is a contract.

Code, with highlighting

Fenced code blocks are syntax-highlighted automatically; just name the language:

export type Post = {
  meta: PostMeta
  slug: string
  html: string
}

Now go change content/pages/about.md, then read the other two starter posts and delete all three when you're ready to make this site your own.