Juicer
English

Configuration

site.toml keys juicerchurch reads, per-page frontmatter for sermons / events / ministries, and the [juicerchurch] palette table.

juicerchurch reads its configuration from three places:

  • A small set of top-level site keys (the same ones every juicer theme uses, plus a few church-specific ones for services / visit info).
  • A namespaced [juicerchurch] table for theme-specific palette + sizing overrides.
  • Per-page frontmatter for sermons, events, ministries, and photo albums.

Quick example

A minimal site.toml that produces a credible parish site:

title    = "St. Stephen's Parish"
tagline  = "Anglican community, Riverdale."
author   = "St. Stephen's Parish"
baseURL  = "https://example.com"
theme    = "juicerchurch"

calendarMonths = 6
eventsSection  = "events"

[visit]
address = "120 River St"
city    = "Toronto"
state   = "ON"
zip     = "M4M 2P3"
mapURL  = "https://maps.example.com/ststephens"

[[services]]
day   = "Sun"
time  = "8:00 AM"
label = "Said Eucharist (BCP)"

[[services]]
day   = "Sun"
time  = "10:30 AM"
label = "Sung Eucharist"

[[services]]
day   = "Wed"
time  = "7:00 PM"
label = "Evening Prayer"

[juicerchurch]
brand     = "#2c5282"   # muted blue# muted blue
fontSerif = "'Source Serif 4', Georgia, serif"

A typical sermon page (content/sermons/2024-12-24-christmas-eve.md):

---
title: "On Comfort, and Why It Comes from a Manger"
date: 2024-12-24
author: ann
scripture: "Isaiah 9:2–7; Luke 2:1–14"
audioURL: "/audio/2024-12-24.mp3"
audioDuration: "23:14"
videoURL: "https://youtube.com/watch?v=..."
videoDuration: "24:02"
summary: A meditation on Christmas Eve, on what comfort means and where it comes from.
---

The transcript or summary body goes here.

A typical ministry page (content/ministries/food-bank.md):

---
title: Riverdale Food Bank
layout: ministry
leader: Mara Sanderson
meets: "Saturdays, 10am–noon"
contact: "foodbank@ststephens.example"
---

The ministry's narrative — who, what, why, how to get involved.

Top-level keys

KeyTypeDefaultNotes
titleStringrequiredBrand text in topbar + footer; <title> element.
taglineStringunsetItalic subtitle next to the brand.
authorStringunsetFooter copyright. Falls back to title.
baseURLStringrequiredStandard juicer key.
themeStringrequiredSet to "juicerchurch".
faviconStringunsetPath to a favicon.
hideJuicerCreditBooleanfalseSet true to remove the “Built with juicer” line.
customCSS[String]unsetSite stylesheets loaded after the theme CSS.
eventsSectionString"events"Section name juicer treats as events; populates .site.events and .site.calendar. See Configuration → Calendar / events features.
calendarMonthsInt12Months of calendar grid .site.calendar pre-computes.
visitObjectunset{address, city, state, zip, mapURL} — surfaced in the footer on every page.
servicesArrayunsetRegular weekly services: [[services]] rows of {day, time, label}. Surfaced in the home page hero and the footer.

Palette + token overrides — [juicerchurch]

All optional. Anything you don’t set keeps the muted-blue defaults.

KeyCSS variableNotes
brand--brandPrimary brand accent.
brandStrong--brand-strongHover-emphasis.
brandSoft--brand-softSubtle paper-tinted backgrounds.
accent--accentWarm secondary.
leaf--leaf“Today” indicator on the calendar grid.
brandDarkdark counterpartsOne per light token.
fontSans--font-sansBody / UI / nav face.
fontSerif--font-serifHeadings, sermon titles.
fontMono--font-monoScripture references, calendar cells.
measure--measureProse column max-width. Default 38rem.
gutter--gutterOuter padding around content blocks.
radiusLg--radius-lgLarge border-radius.

Per-page frontmatter

Sermon pages

Sermons are dated, single-author posts that opt into the sermon layout. They live under content/sermons/ and surface on the sermon archive page.

KeyTypeWhat
layoutStringsermon. The sermon-archive page uses layout: sermon-archive.
titleStringSermon title.
dateISORequired. Drives sort order and archive grouping.
authorStringSingle preacher ID — references [[authors]] in site.toml.
scriptureStringScripture reference text ("Isaiah 9:2–7; Luke 2:1–14"). Rendered in a tagged block above the body.
audioURLStringPath or absolute URL to an audio file (mp3/m4a). Theme injects an <audio> element.
audioDurationStringDisplay duration ("23:14"). Shown next to the audio control.
videoURLStringPath or absolute URL to a video (YouTube / Vimeo / mp4).
videoDurationStringDisplay duration.
seriesString(Engine feature.) Sermons share series support with juicerblog — Advent series, Lent series, etc.
summaryStringShort blurb on the archive page.

Event pages

Event pages live in the eventsSection (default events).

KeyTypeWhat
dateISO stringRequired for an event to surface in .site.events.
eventTimeStringDisplay time ("7 PM", "6:30–8 PM").
eventLocationStringAddress or named location.
recurringString"weekly" for weekly recurrence. Expands onto every matching weekday in .site.calendar.
recurringDayStringDay name for recurrence. Defaults to the start date’s day of week.
photos[String] or [Object]Photos.

Ministry pages

KeyTypeWhat
layoutStringministry.
titleStringMinistry name.
leaderStringPerson’s name (free text, not a registry ID — ministries often have non-clergy leaders).
meetsStringDisplay string for meeting cadence ("Saturdays, 10am–noon").
contactStringEmail / phone / freeform contact info.

Photo albums

Same as juicercafe — layout: album for one event’s gallery, layout: photo-album for the site-wide aggregate.

Going beyond config

Drop a file with the same path under your own site to override anything in the theme — this is the ordinary theme overlay pattern:

You want to change…Override at…
The topbar<src>/partials/topbar.html
The footer<src>/partials/footer.html
The calendar grid<src>/partials/month-grid.html
The photo grid<src>/partials/photo-grid.html
The 404 page<src>/layouts/_default/404.html
Custom CSS<src>/static/site.css (and list it under customCSS in site.toml)

Site files always win over theme files, so overrides are a one-file-at-a-time operation — no forking the theme.

SEO

Every juicer theme ships a shared SEO partial (partials/seo.html) that emits the standard meta block: description (with site-level fallback), canonical link, author meta, robots noindex, OpenGraph + Twitter cards (via the ogTags builtin), Atom feed discovery, and theme-specific JSON-LD. The engine separately writes sitemap.xml and robots.txt.

Site-wide keys

description = "Trinity Community Church — Sunday services at 9 and 11, Wednesday Bible study at 7."
ogImage     = "/og/sanctuary.jpg"

robots   = true
noindex  = false
disallow = ["/admin/"]

# Optional: Church JSON-LD on the homepage. Subtype of PlaceOfWorship —# Optional: Church JSON-LD on the homepage. Subtype of PlaceOfWorship —
# helpful for Google Maps Knowledge Panel.# helpful for Google Maps Knowledge Panel.
[church]
phone   = "+1-555-0100"
address = "412 Maple Street, Springfield IL 62701"
image   = "/img/sanctuary.jpg"

Per-page frontmatter

---
title: The Sermon on the Mount
summary: A one-sentence dek for search results and OG cards.
date: 2026-04-12
author: pastor-rob
image: /img/sermons/sermon-on-mount.jpg
ogTitle: A snappier social headline
ogDescription: Tightened for socials
noindex: true   # excluded from sitemap, JSON-LD suppressed, <meta robots> emitted
---

Structured data emitted

PageSchema
Root sectionWebSite (+ Church when [church] is set in site.toml)
Dated non-section pageArticle (with author / image / dateISO)
Any page with ancestorsBreadcrumbList

noindex: true suppresses ALL JSON-LD on that page.

Overriding the SEO partial

Drop a file at <src>/partials/seo.html (or seo-jsonld.html for just the structured-data part). Site overrides win over the theme’s copy.

Search

Esc
to navigate to open Esc to close