sqzass
한국어

Writing content

Pages, sections, front matter and the URLs they produce

Everything under content/ is a page. A directory with an _index.md in it is a section, and a section collects the pages beside it.

Pages and sections

content/
├── _index.md            →  /
├── about.md             →  /about/
└── guide/
    ├── _index.md        →  /guide/
    ├── install.md       →  /guide/install/
    └── deep/
        ├── _index.md    →  /guide/deep/
        └── dive.md      →  /guide/deep/dive/

A directory without an _index.md still becomes a section, titled after the directory, so its pages are collected and it appears in navigation — forgetting the file must not make pages vanish from the sidebar. What it does not get is an index page: /guide/ itself 404s until you add one. Add _index.md when the section needs a title of its own, a description, or a body.

Why every URL is a directory

Pages are written as <path>/index.html, never <path>.html. A host with rewrite rules can serve /about from about.html, but a host without them cannot, and sqzass is built to be correct on the host that gives you nothing. The directory form works everywhere — GitHub Pages, Cloudflare Pages, S3, or python3 -m http.server — because it asks for no cleverness from the server.

The cost is that a link to /about (no trailing slash) gets redirected by most servers before it resolves. Link to /about/, or better, use @/ links and let sqzass write the URL.

Slugs come from filenames

install.md becomes /guide/install/. The title has nothing to do with it.

This matters most in Korean. Transliterating a title would be the usual trick, but slug-style crates map Hangul to ASCII one syllable at a time and without context, so two different Korean titles can collapse onto the same path. A filename you chose is unambiguous and it is already unique in its directory. A Korean filename is percent-encoded UTF-8 and left alone.

Override it per page with slug in front matter. Two pages claiming the same URL is a build error, not a last-writer-wins race.

Ordering

Sections sort their pages by weight (ascending), and pages without one fall back to their title. Set sort_by on a section's _index.md, or [nav] sort_by in sqzass.toml to change the default for the whole site.

weight Ascending. The default.
title Ascending.
date Descending — newest first, undated pages last. See Feeds.

Drafts

draft = true keeps a page out of the build. --drafts on the command line, or [build] drafts = true in the config, puts them back.