@svartz/theme-blog
v2.3.0
Published
A Svartz theme for blogs: a post grid, tag filters, an archive, and long-form reading.
Readme
@svartz/theme-blog
A starting point for a blog: a front page with a featured post and a filterable grid, long-form post pages, tags, and an archive. The structure follows Ghost's Casper; the look is Svartz's.
The blog extends @svartz/theme-minimal: it swaps minimal's frame and regions for a top header and one reading column, and keeps minimal's search, drawer, and previous/next. Compose it with other themes through its extensions export.
// svartz.config.ts
vaults: [{
id: "blog",
path: "vault",
target: { type: "static" },
theme: { base: "@svartz/theme-blog", nav: { Archive: "/feed/", Tags: "/tags/", About: "/about/" } },
site: { title: "Plot 14", url: "https://example.com" },
}],What it renders
| Page | Contents |
| --- | --- |
| Front page | Site name and description, the featured post (or the newest), then every other post with tag filters (?tag=) and a Show more button |
| Post | Primary tag, title, excerpt, byline (author, date, reading time), cover, the post, tags, previous/next links in folder order, related posts by shared tags |
| Tags | /tags/ lists topics by use; /tags/:tag/ is a post grid |
| Archive | /feed/, grouped by year and month |
| Series | /folders/ and /folders/:path/ group posts by folder |
Posts are every note except index.md. If index.md exists, it renders as an introduction above the post feed. Dates come from published_at, then the created date.
With site.url set, the footer links the vault's RSS feed.
Frontmatter
published_at: 2026-09-12
cover: hero.jpg # published with the post
coverAlt: A gravel path through the allotment
excerpt: One or two sentences for cards; falls back to description.
author: Mia
featured: true # lead the front pageThe type is exported as PostMeta.
Settings
theme.nav sets the header links (default: Archive and Tags). theme.routes, theme.footer.links, and theme.comments work as in every Svartz theme.
Develop
pnpm svartz dev --vault showcase-blog