Capabilities
Pages & templating
Pages are the backbone of a site. They're authored as templates and rendered on the server, so every page ships as complete HTML — fast to load and fully indexable by search engines.
Templating
Pages are written in a familiar templating language with variables, conditionals, loops, and filters. You compose them from reusable pieces so a site stays consistent and DRY:
- Layouts wrap pages with shared structure — header, footer, navigation.
- Partials are reusable fragments you include across pages.
- Filters transform values inline — formatting dates, numbers, text, and more.
Output is escaped by default, so content rendered into a page is safe from injection unless you explicitly opt a value out.
Routing
A page's location determines its URL — the file path is the route. On top of that you get:
- Dynamic routes with parameters, like
/blog/[slug]or/products/[id], so one template serves many pages. - Validated parameters — path and query values can be typed and checked before your page logic runs.
- Custom error pages for not-found and unauthorized states.
Metadata
Each page can declare metadata — title, description, social preview, and your own custom fields — that flows into the rendered HTML and into your templates. This is what drives SEO tags and Open Graph previews.
Built-in niceties
- A sitemap is generated automatically, and you can provide a custom
robotsfile. - Pages are served over a global CDN, so visitors get them from a nearby location.
- A small client-side runtime is available in the browser for session, chatbot, and realtime features where you use them.
Beyond static pages
Pages become dynamic when you add logic to them — processing a form, loading data, or returning JSON. That's covered in Handlers, forms & webhooks. For content that lives in a database rather than in the template, see Databases & content.