File types

How the build treats .c.html, .t.html, static/, and folders that start with _.

.c.html (coupled file)

YAML frontmatter between ---, then HTML. The file can contain <style> and <script>; use attributes like mount, serve, bundle, destination on those tags.

  • TYPE: page — Treated as a page. The file path under src/ becomes a URL under dist/ (e.g. src/docs/foo.c.htmldist/docs/foo.html). Pages require a TEMPLATE: in frontmatter.
  • TYPE: component — Not a page. No URL. The file only fills mount slots that pages or the template reference via {{MOUNT.slotName}} or {{MOUNT.slotName:var}}. Components can include other components.

You can use components in a template (e.g. {{MOUNT.nav}}) or in a page body ({{MOUNT.hero:heroTitle}}). Each page specifies which template it uses in frontmatter.

Page (minimal)
---
title: About
TYPE: page
MOUNT: content
TEMPLATE: _templates/layout.t.html
---
<p>Page body goes here.</p>
Component (no URL)
---
TYPE: component
MOUNT: nav
---
<nav><a href="/coupled-docs/">Home</a></nav>

.t.html (template)

An HTML skeleton with placeholders like {{title}} and {{MOUNT.slotName}}. Templates are not emitted as their own page. Each page chooses a template in frontmatter with TEMPLATE: layout.t.html or TEMPLATE: _templates/layout.t.html. The build runs each page through that template and outputs one HTML file per page.

Any number of pages can use the same template. Put templates in _templates/ (or anywhere) and reference by path.

Template (placeholders only)
<!DOCTYPE html>
<html>
<head>
  <title>{{title}}</title>
  {{MOUNT.head}}
</head>
<body>
  {{MOUNT.nav}}
  <main>{{MOUNT.content}}</main>
  {{MOUNT.body}}
</body>
</html>

src/static/

Copied as-is to dist/static/. Put images, fonts, or global assets here. Link to them from the template or from pages (e.g. /static/logo.png). The build does not process file contents — it only copies.

Reference in HTML
<img src="/coupled-docs/static/logo.png" alt="Logo">
<link rel="stylesheet" href="/coupled-docs/static/fonts.css">

Folders starting with _

That path segment is omitted in dist/. For example src/_stuff/foo.c.html becomes dist/foo.html (not dist/_stuff/foo.html). Use _ for shared layouts, components, or any directory you do not want in the output URL path.

Common: src/_templates/, src/_components/. Files inside still produce output if they are pages; only the _ segment is stripped from the path.

Path mapping
src/_components/nav.c.html     →  (component, no URL)
src/_templates/docs.t.html     →  (template, not emitted)
src/docs/file-types.c.html    →  dist/docs/file-types.html