# Authoring > How to write pages. Markdown, frontmatter, fenced code, live component demos, inline component tags, navigation. Source: https://shelldocs.shellui.dev/docs/authoring Everything ShellDocs asks of you as an author lives here : the frontmatter fields, the fenced-code conventions, how to drop a live component demo mid-page, how the sidebar decides where things go. ## The one-minute overview A ShellDocs page is a `.md` file under `content/`. Drop one in, it appears in the sidebar automatically : no registration, no import, no meta.json edit required. ````markdown --- title: My Page description: What this page is about. order: 3 --- # My Page Regular markdown. Fenced code blocks: ```csharp var x = 1; ``` Inline components mid-prose: Something worth calling out. Live component demos: ```razor:preview ``` ```` That's the whole surface area for authoring. ## Anatomy of a page | Name | Type | Default | Description | |------|------|---------|-------------| | `Frontmatter` | `YAML` | | Top-of-file title / description / order (+ arbitrary keys). Controls sidebar entry, meta tags, and ordering. | | `Body` | `markdown` | | CommonMark + GFM pipe tables + task lists + footnotes. Softline breaks become hard breaks (edit-friendly for prose). | | `Fenced code` | `fence` | | Standard language fences render as highlighted code with a copy button and a language badge. | | `razor:preview` | `live example` | | A fence that renders live components with Preview and Code tabs. Its body is Razor. | | `Inline components` | `tag` | | Component tags in the page become real Blazor components. Their bodies are markdown. | ## Where pages live Every `.md` under `content/docs/**` becomes a page. The URL is derived from the folder path: ```text content/ docs/ introduction.md # /docs/introduction getting-started/ installation.md # /docs/getting-started/installation quick-start.md # /docs/getting-started/quick-start ``` > **index.md is special** > > An `index.md` in a folder gets the folder's URL. `content/docs/guides/index.md` → `/docs/guides` (not `/docs/guides/index`). Useful for landing pages at section roots. ## Seeing your edits Run the site with `shelldocs dev` (or `dotnet watch run`). - **Editing an existing page** shows on the next browser refresh. Pages are rendered from disk on each request. - **Adding, renaming or deleting a page, or editing a `meta.json`,** changes the navigation graph, which is built when the app starts. Restart the dev server to pick those up. - **Editing `.razor` or `.cs` files** goes through hot reload as in any Blazor app. ## Where to go next - [Frontmatter](https://shelldocs.shellui.dev/docs/authoring/frontmatter.md): Every field ShellDocs reads from the YAML block. - [Fenced code](https://shelldocs.shellui.dev/docs/authoring/fenced-code.md): Language detection, copy buttons, Shiki highlighting. - [razor:preview](https://shelldocs.shellui.dev/docs/authoring/razor-preview.md): The live-component-demo fence. - [Inline component tags](https://shelldocs.shellui.dev/docs/authoring/component-tags.md): Drop a Callout mid-prose : how it works. - [Navigation](https://shelldocs.shellui.dev/docs/authoring/navigation.md): meta.json, order, dividers, hidden pages. - [Components reference](https://shelldocs.shellui.dev/docs/components/callout.md): Every primitive you can drop into markdown. - [Versioning](https://shelldocs.shellui.dev/docs/guides/versioning.md): One docs tree per released version. - [Redirects](https://shelldocs.shellui.dev/docs/guides/redirects.md): Folder URLs and moved pages.