---
title: Authoring and configuration
description: Configure navigation, content adapters, islands, themes, and the Blume lifecycle.
---

## Local content

Write Markdown or MDX under `apps/web/content/docs`. Use frontmatter for title, description, sidebar order, search facets, draft/hidden status, and per-page SEO. `meta.ts` files configure groups. Includes reuse Markdown, MDX, and source snippets; variables substitute values from config.

## Sources

Add adapters from `blume/sources` to `content.sources`. Local filesystem and Obsidian need local paths. Remote MDX and GitHub Releases read repositories. Notion, Sanity, Contentful, Payload and Strapi need their own account/configuration. The custom adapter implements ContentSource. No content-service credentials are bundled.

## Interactive pages

Custom `.astro` routes live in `pages/`. React `.tsx` islands hydrate with explicit Astro client directives. `PageLayout` supplies the Blume header, search, theme, fonts, SEO and discovery links. Components can read `blume/hooks` when layout clientData is supplied.

## Configuration and portability

`blume.config.ts` configures sources, references, navigation, i18n, versions, theming, search, assistant, narration, rate limits, analytics, consent, SEO and agent discovery. Registry components are available with `blume add`. `blume eject` promotes the runtime into a standard Astro app when ownership is desired.

[Official framework configuration](https://useblume.dev/docs/configuration).

## Shared content in action

The following callout is included at build time, and its dollar conversion is read from a shared configuration variable:

:::note[Shared ledger units]
One credit represents $0.01. One credit is 1,000,000 microcredits. Always preserve integer microcredits across API and ledger operations.
:::
