Built with Chinaski

Output Structure

Every build produces a plain directory tree of files. This page maps out what lives where, so you know exactly what goes live.

Per-language roots

In the default path URL mode, each Active Language gets its own subtree:

output/
  en/
  es/
  pt/

With no language segments (single-language mode), the content sits directly in output/. With subdomain mode the same per-language directories carry the content, and your web server routes each language subdomain to its directory.

Promotion replaces the live tree via a symlink or directory rename; visitors only ever see a fully-built tree.

Page and post files

  • Pages live at their own nested path: output/en/about/philosophy/index.html for a child page under its parent.
  • Posts live under the blog prefix inside the language tree: output/en/blog/my-post/index.html (the prefix defaults to blog and can be overridden per language).
  • Category archives sit within the blog prefix too: /blog/category/<slug>/.

Categories and pages nest from the admin content structure; the URL ground rules come from each language’s URL settings.

Shared files per language

Each language directory also carries its generated detection and index files:

  • sitemap.xml
  • robots.txt
  • feed.xml: only when that language has at least one published post
  • search-index.json: the index powering site search
  • 404.html: the built not-found page
  • .well-known/security.txt: when a security contact is configured
  • PWA extras when enabled: manifest.json, sw.js, offline.html

Root-level: a redirect page (or real page) occupies output/{lang}/index.html depending on where the domain root should point.

Assets are synced per language

Large shared directories get copied in per language at each build:

  • media/: the uploads from the admin’s media screen, mirrored into every language tree; only changed files are rewritten, so synced assets ride through unchanged builds.
  • fonts/: the site’s typeface files.
  • Favicon files at the language’s root (favicon.ico, favicon-96x96.png, apple-touch-icon.png) when one is configured.

A logo file must be present under the site’s assets folder; builds warn “not found in assets/, skipping” if the setting names one that isn’t there. The build log marks each sync with a “media synced” line per language directory.

Redirects

Redirects are rendered two ways in the tree:

  • HTML redirect pages at the old paths (with canonical links), per language;
  • generated server config snippets at the output root (_redirects.caddy), for netlify-style setups a _redirects file as well; pattern redirects exist only as HTML pages.

Outside the output tree

The build also writes a signed manifest outside the output: a private/ directory beside it holds build-manifest.json and its signature. This is the integrity claim of what went live, and on a botched promotion the previous manifest is restored, not overwritten.

Read this site in