company-site template
Marketing and company website with six Astro starter pages — landing, about, team, careers, press, and contact.
The company-site template scaffolds a marketing-focused company website. It ships six sub-pages, each pre-wired with @publier/shell components. Every page is overridable — edit src/pages/<name>.astro in place.
Scaffold
publier new my-site --template company-siteDirectory layout
my-site/ src/ pages/ index.astro # / — Hero + FeatureGrid + TestimonialCard + CtaBand about.astro # /about careers.astro # /careers — JobsList contact.astro # /contact press.astro # /press — PressGallery team.astro # /team — TeamGrid content/ press/ # MDX press releases — seed entry included publier.config.yaml theme.yaml astro.config.ts content.config.tsThe press/ directory ships with a seed press release. The team/ and careers/ content directories are registered in content.config.ts but are created when you add your first MDX entries.
astro.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 { contentLoader, pagesLoader } from '@publier/shell/loaders';import { blogSchema, pagesSchema } from '@publier/shell/schemas';
export const collections = { // Standalone MDX pages (landing, about, pricing). pages: defineCollection({ loader: pagesLoader(), schema: pagesSchema }), // Press releases. press: defineCollection({ loader: contentLoader({ base: './src/content/press' }), schema: blogSchema, }), // Team member profiles. team: defineCollection({ loader: contentLoader({ base: './src/content/team' }), schema: blogSchema, }), // Job postings. careers: defineCollection({ loader: contentLoader({ base: './src/content/careers' }), schema: blogSchema, }),};publier.config.yaml
The project requires a site mapping with a non-empty site.name:
site: name: My Company 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.
Enabling and disabling sub-pages
The six starter routes come from files in src/pages/. YAML pages: flags are not applied and do not hide those files or their navigation links. Update the route files and navigation explicitly when changing the published page set.
Customizing a sub-page
The scaffolded .astro files in src/pages/ are starter implementations. You have two options:
Edit the .astro file in place — update component props, add or remove sections, change copy.
Use MDX content in your own route — registering the pages collection loads entries but does not create routes. A route must retrieve and render the MDX content; adding src/content/pages/about.mdx alone does not publish /about.
See Pages reference for full per-page documentation and override patterns.