✨ Publier v1 is live — a polished docs platform built for the open web.
Skip to content

company-site template

Marketing and company website with six toggleable sub-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

Terminal window
publier new my-site --template company-site

Directory 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.ts

The 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

astro.config.ts
import tailwind from '@tailwindcss/vite';
import { defineConfig } from 'astro/config';
import { docsShell } from '@publier/shell/integration';
export default defineConfig({
integrations: [docsShell()],
vite: { plugins: [tailwind()] },
});

content.config.ts

src/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

publier.config.yaml
name: My Company
url: https://example.com
favicon: /favicon.svg
nav:
title: My Company
links:
- label: About
href: /about
- label: Team
href: /team
- label: Careers
href: /careers
- label: Press
href: /press
- label: Contact
href: /contact
search:
enabled: false
theme: theme.yaml
pages:
landing: true
about: true
team: true
careers: true
press: true
contact: true
changelog: false
status: false
knowledge-base: false
docs: false
blog: false

Enabling and disabling sub-pages

Set a sub-page key to false under pages: and remove (or keep) the matching file under src/pages/. Astro’s filesystem routing means the route only exists if the file exists — the pages: toggle tells Publier to omit the page from nav and sitemap regardless.

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.

Switch to MDX — delete src/pages/about.astro and add src/content/pages/about.mdx with pagesSchema frontmatter. The page is rendered through the standard pages collection.

See Pages reference for full per-page documentation and override patterns.