full template
Docs, blog, changelog, and a marketing homepage in one starting template.
The full template combines a documentation section, a blog, a changelog, and a marketing homepage. Additional company, status, and knowledge-base routes are pages you author; YAML flags do not supply them.
Scaffold
publier new my-site --template fullDirectory layout
my-site/ src/ pages/ index.astro # / — Hero + FeatureGrid + PricingTable + TestimonialCard + CtaBand components/ CustomWidget.tsx # example custom Qwik component content/ docs/ # /docs/<slug> index.mdx quick-start.mdx blog/ # /blog/<slug> welcome-to-the-blog.mdx v1-architecture.mdx changelog/ # /changelog entries v0-9-0.mdx v1-0-0.mdx publier.config.yaml theme.yaml astro.config.ts content.config.tsastro.config.ts
Keep the generated integration array: docsShell() first, then Expressive Code, MDX, sitemap, Pagefind, and Qwik. These integrations are registered explicitly; the shell warns when one is missing and does not add it. See Configuration for the complete configuration and required order.
content.config.ts
import { defineCollection } from 'astro:content';import { blogLoader, contentLoader, docsLoader, pagesLoader } from '@publier/shell/loaders';import { blogSchema, docsSchema, pagesSchema } from '@publier/shell/schemas';
export const collections = { docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), blog: defineCollection({ loader: blogLoader(), schema: blogSchema }), pages: defineCollection({ loader: pagesLoader(), schema: pagesSchema }), press: defineCollection({ loader: contentLoader({ base: './src/content/press' }), schema: blogSchema, }), team: defineCollection({ loader: contentLoader({ base: './src/content/team' }), schema: blogSchema, }), careers: defineCollection({ loader: contentLoader({ base: './src/content/careers' }), schema: blogSchema, }), changelog: defineCollection({ loader: contentLoader({ base: './src/content/changelog' }), schema: blogSchema, }),};publier.config.yaml
The project requires a site mapping with a non-empty site.name:
site: name: My Site url: https://example.com favicon: /favicon.svgKeep the generated navigation, then customize it using Global settings. search.enabled controls the header trigger; the shortcut remains Cmd/Ctrl+K. The template’s pages: flags do not create or suppress routes. See Pages for the current route controls and limits.
Disabling surfaces
The shell’s routes integration option controls injected docs, blog, changelog, 404, and feed routes. It does not remove your own src/pages/ files, and pages: YAML flags have no routing effect. See Pages for the supported controls; maintain navigation links to match the routes you publish.
Custom Qwik components
The template includes src/components/CustomWidget.tsx as a starter. Add your own Qwik component$() components there and import them in any .mdx or .astro file:
import { CustomWidget } from '../components/CustomWidget';
<CustomWidget />