Docs menu

Content

How the studio reads your content collections, and where its presentation settings go.

The studio has no schema of its own. It reads the collections in src/content.config.ts the way Astro does: each loader says where the files are, and each Zod schema says what the fields are. A field you add to a schema is a new control in the studio the next time it loads. Collections loaded with glob() or file() can be edited; others are listed, read only.

Import z from astro/zod, not from the zod package. Vesper reads the hints you attach with .meta(), such as a label or help text, and a second copy of Zod loses them. The fields.* helpers are plain Zod from astro/zod too, so Astro checks them like any other schema.

vesper.config.ts, in your site's folder beside astro.config.mjs, is optional. It holds presentation only: what collections are called, their icons and URLs, image ratios, hints for Markdoc tags, MDX components and custom widgets. It never defines fields, so content.config.ts stays the one place your content's shape is written down.

This page as Markdown, for AI tools.