Zest Starter

A minimal blog scaffold generated by zest init . It doubles as the reference template for how a Zest site is organised.

Layout

.
├── _config.toml          # site metadata, build options, defaults
├── _init.zest.fsx        # runs before every build; injects global data
├── _data/nav.toml        # site navigation (exposed as site.nav)
├── _themes/oxygen/       # self-contained theme
│   ├── _theme.toml       # theme manifest
│   ├── _layouts/         # default.html, post.html (Nunjucks + HTML)
│   ├── _includes/        # header.html, footer.html
│   ├── _locales/         # en.toml, zh.toml (i18n strings)
│   └── assets/css/       # main.zcss → compiled to /assets/css/main.css
├── content/              # pages
│   ├── index.zest.fsx    # home page (F# DSL)
│   ├── about.zest.fsx    # static page
│   ├── features.zest.fsx # component showcase
│   ├── 404.zest.fsx      # custom 404 page
│   ├── rss.zest.fsx      # RSS feed (raw XML)
│   ├── sitemap.zest.fsx  # sitemap (raw XML)
│   └── posts/
│       ├── index.zest.fsx            # post listing
│       └── *.md                      # blog posts (Markdown)
└── _site/               # build output (generated)

        

How the pieces fit

Frontmatter comes from // @key value comments (e.g. // @title Home , // @layout default ).

content/posts/ . The [[defaults]] entry in _config.toml routes them to the post layout.

{{ content | safe }} , {{ include header.html }} , {% if %} / {% for %} and filters like | t , | date , | readingTime .

preprocessor with variables, nesting and color functions, compiled to plain CSS with no build tooling.

in templates as {{ site.<key> }} .

Workflow

zest init my-blog     # scaffold this starter
cd my-blog
zest serve            # dev server with live reload
zest build            # static output into _site/

        

The oxygen theme

The bundled theme is deliberately quiet: warm paper background, ink text, one jade accent, serif headings, hairline rules. No animation, no shadows, no hover lifts — typography and whitespace carry the page. It ships with light, dark ( prefers-color-scheme ) and print styles, and is fully responsive.

Commands

Command Description
zest init Scaffold a new site from this starter
zest build Build the site into _site/
zest serve Run the dev server with live reload
zest clean Remove build output