---
title: "Web Pages · RUAL Documentation"
description: "Build websites and webshops in a blueprint: pages rendered on the server from templates, with SEO built in, and actions that update only what changed."
canonical: https://docs.rual.nl/web
language: en
---

# Web Pages

Build websites and webshops in a blueprint: pages rendered on the server from templates, with SEO built in, and actions that update only what changed.

## Start

- [Overview](https://docs.rual.nl/web/overview): What a RUAL web page is: a template rendered on the server, a small script, and actions that answer with only the parts of the page that changed.

- [Your First Page](https://docs.rual.nl/web/first-page): Publish a web page in five minutes: add a web_page block, connect web_render, write the template, pass your data and open the URL.

- [Tutorial: A Small Webshop](https://docs.rual.nl/web/build-a-shop): A product list from a storage, a product page with a clean URL, a live search, an add-to-cart action and a checkout form, built step by step.

## Templates

- [Template Syntax](https://docs.rual.nl/web/templates): Values, conditions, loops, translations, comments and every filter of the web template engine: money, dates, numbers, text and lists.

- [Layouts and Partials](https://docs.rual.nl/web/layouts-and-partials): Store a template once and reuse it: partials for shared pieces, layouts that wrap the page, and the variables every template can read.

- [Lists and Tables](https://docs.rual.nl/web/lists): Render the documents of a storage search with web_foreach: keyed rows, an empty state, and the row key later actions use to reach exactly that row.

## Interaction

- [Actions](https://docs.rual.nl/web/actions): A button or form runs a web_action in the page's blueprint, which answers with updates: replace a row, remove it, insert one, update a counter or redirect.

- [Forms and Validation](https://docs.rual.nl/web/forms): Checks the browser runs before anything is sent, server errors next to the right field with web_errors, and forms that keep working without JavaScript.

- [Markup Reference](https://docs.rual.nl/web/markup): Every data attribute the web runtime reads: data-action, data-trigger, data-key, data-confirm, data-optimistic and data-toggle, with what each one does.

## Publishing

- [SEO and Sharing](https://docs.rual.nl/web/seo): The head tags web_render writes for you: title, description, canonical, Open Graph, Twitter cards and JSON-LD, and how to add or override your own.

- [Languages](https://docs.rual.nl/web/languages): One page in many languages: l10n URLs and domains of their own, hreflang and og:locale written for you, translations in templates and localized numbers.

- [Speed and Caching](https://docs.rual.nl/web/speed): Why web pages are fast: templates that compile once, answers that hold only what changed, ETags, shared caching and links that load before the click.

- [Escaping and Security](https://docs.rual.nl/web/security): Where a value lands decides how it is escaped, which templates refuse to compile and why, the Content Security Policy, and who may run which action.

## Going further

- [Building with AI](https://docs.rual.nl/web/with-ai): Let an AI agent write your pages: what to ask for, how stored templates and short flows keep its work reviewable, and the habits that keep pages consistent.

- [Migrating from State Pages](https://docs.rual.nl/web/migrate-from-state-pages): Move a state page to web blocks: which block replaces which, how state and modals become templates and actions, and a safe order to do it in.
