PolicyPress is configured through a single config.toml file at the repository root. It is a Zola configuration file. PolicyPress-specific settings live under [extra.policypress], keeping them cleanly separated from theme-level settings in [extra].

Required fieldsπŸ”—

These fields must be present or PolicyPress will exit with an error before building anything.

FieldLocationDescription
base_urltop-levelCanonical URL of the published site (e.g. "https://security.example.com")
organization[extra.policypress]Organization name β€” injected into PDFs and via {{ org() }} shortcode
logo[extra.policypress]Filename of the logo image relative to static/ (e.g. "logo.png")
pdf_color[extra.policypress]Hex accent color used on PDF cover pages (e.g. "#0e90f3")
policy_dir[extra.policypress]Path to the policy directory relative to content/ (e.g. "policies/")

Example minimal configuration:

base_url = "https://security.example.com"
title = "Example Co Security Center"
compile_sass = true
theme = "policypress"

[[taxonomies]]
name = "SCF"
render = false

[[taxonomies]]
name = "TSC2017"
render = true

[extra.policypress]
organization = "Example Co"
logo = "logo.png"
pdf_color = "#0e90f3"
policy_dir = "policies/"

PDF and build optionsπŸ”—

FieldLocationTypeDefaultDescription
redact_web[extra.policypress]boolfalseWhen true, renders a redaction bar over {% redact() %} … {% end %} blocks on the website. Does not affect PDF generation β€” use --redact on the CLI.
show_draft_pdfs[extra.policypress]boolfalseWhen true, links to draft PDFs appear on the policy index page

Draft and redact modes can also be set at build time via GitHub Action inputs or CLI flags (--draft / --redact). Action inputs always override config.toml.

Site content fieldsπŸ”—

FieldLocationTypeDefaultDescription
lead[extra.policypress]string-Subtitle shown below the site title on the homepage
policy_root[extra.policypress]string-Zola internal link to the policies section index (e.g. "@/reports/scf.md")
scf_report_page[extra.policypress]string-Internal link to the SCF compliance report page
soc2_report_page[extra.policypress]string-Internal link to the SOC 2 report page

The main navigation bar is controlled by [[extra.menu.main]] entries. Each entry accepts:

FieldTypeDescription
titlestringDisplay label
urlstringTarget URL
iconstringFont Awesome class (e.g. "fas fa-file-alt")
weightintegerSort order - lower numbers appear first
[[extra.menu.main]]
title = "Policies"
url = "/policies/"
icon = "fas fa-file-alt"
weight = 10

Team directoryπŸ”—

The team page is populated from [[extra.policyteam.members]] entries:

FieldTypeRequiredDescription
namestringyesFull name
titlestringyesJob title
emailstringnoContact email
phonestringnoContact phone
imagestringnoFilename under static/
pagestringnoPath to a content page for the team member

BrandingπŸ”—

FieldLocationTypeDefaultDescription
brand_color[extra]stringtheme defaultHex color for the web theme’s primary/accent surfaces (buttons, links, badges, highlights). Applied at load time - no SCSS recompile needed. Set it to the same value as pdf_color so web and PDF branding match.
pdf_color[extra.policypress]string-Hex accent color for PDF cover pages and rules (see Required fields).
logo[extra.menu] / [extra.policypress]string-The navbar logo is [extra.menu].logo (web); the PDF title-page/header logo is [extra.policypress].logo; [extra.schema].logo and [extra.open].image set the JSON-LD and Open Graph images.
[extra]
brand_color = "#0e90f3"

HomepageπŸ”—

Two homepage layouts are available, selected by homepage_style in [extra]:

ValueLayout
"dashboard" (default)A compliance dashboard computed from your policies - policy count, reviews overdue, framework coverage, and a per-policy review-status list - plus any [extra.frontpage.features.cards] shown as navigation tiles. Best for an internal ISMS.
"marketing"A landing page (hero, feature grid, quick actions, statistics) driven by [extra.frontpage]. Best for a public-facing site.
[extra]
homepage_style = "dashboard"   # or "marketing"

The [extra.frontpage] keys below drive the marketing layout. All sub-keys are optional - omit any section to hide it. In dashboard mode only features.cards is used (as navigation tiles).

SectionDescription
[extra.frontpage.hero]title and subtitle for the hero banner
[extra.frontpage.cta]Primary call-to-action button: text and url
[extra.frontpage.secondary_cta]Secondary call-to-action button
[extra.frontpage.features]Feature cards grid (title, subtitle, [[cards]])
[extra.frontpage.quick_actions]Quick-action tiles (title, subtitle, [[actions]])
[[extra.frontpage.statistics]]Statistics strip - each entry has number and label

TaxonomiesπŸ”—

Taxonomies let you cross-reference policies against compliance frameworks. Each taxonomy declared in config.toml can appear in policy front matter.

[[taxonomies]]
name = "TSC2017"    # SOC 2 Trust Services Criteria
render = true       # generates a browseable taxonomy page

[[taxonomies]]
name = "SCF"        # Secure Controls Framework
render = false      # indexed for reports but no public page

Values used in policy front matter must match exactly (case-sensitive).

[[extra.menu.social]]
name = "GitHub"
pre  = '<svg …></svg>'   # inline SVG icon
url  = "https://github.com/your-org"
weight = 10

Open Graph tags for link previews:

[extra.open]
enable  = true
image   = "logo.png"        # fallback OG image
og_locale = "en_US"
[extra.footer]
info = 'Powered by <a href="…">PolicyPress</a>'

[[extra.footer.nav]]
name   = "Privacy"
url    = "/policies/privacy/"
weight = 10

FaviconπŸ”—

PolicyPress ships a default favicon. To use your own, place a favicon.ico in your repository’s static/ directory β€” Zola serves files from static/ before falling back to the theme, so your file takes precedence automatically.

static/
  favicon.ico   ← drop your icon here; replaces the theme default
  logo.png

Modern browsers also pick up PNG icons. If you want to supply multiple sizes or a web manifest, add them to static/ and they will be served alongside your site without any config changes.

Standard Zola fieldsπŸ”—

These standard Zola settings are relevant to PolicyPress deployments:

FieldRecommended valueNotes
compile_sasstrueRequired - PolicyPress ships SCSS
theme"policypress"Required
build_search_indextruePowers the site search widget
generate_feedstrue or falseOptional Atom feed
minify_htmlfalseSafe to enable for production
[markdown].smart_punctuationtrueRecommended for policy prose
[markdown].github_alertstrueEnables > [!NOTE] callouts
[markdown].bottom_footnotestrueRecommended