Why publishing means writing files
A published page in Lettern is an HTML file. Here is what that gets you, and how it stays up to date.
When you publish a page in Lettern, it is rendered once and written to public/ as an HTML file. /pricing becomes public/pricing/index.html, and the web server sends that file straight to the visitor. PHP does not start and the database is not touched.
That one decision explains most of how the product behaves, so here is what it gets you and how it works.
What a visitor gets
A page view is a file transfer. It costs the same on a small shared host as on a large server, and a traffic spike doesn't turn into a queue of PHP processes. A built page is HTML and CSS. JavaScript only comes with what that page uses, such as the runtime for interactions or the player for animations that wait for scrolling. A page with neither loads no JavaScript at all.
How pages stay up to date
Every page records what it read while it was rendered: the entry, the collections it listed, global sets, menus, linked pages and the components it shows. When you publish a change, Lettern works out which pages used that content and rebuilds only those.
Edit a blog post and the post rebuilds, along with the blog index and anything else that lists it. Change the footer and every page with that footer rebuilds. Changes that touch everything, like the design system or a template, queue a full rebuild.
Why there is no build server
The build runs in small chunks after the response that triggered it has been sent, and it continues while the admin is open. The dashboard shows progress. So you don't need a build server, a queue worker or a cron job, and it works on ordinary shared hosting. On a busy site you can also run it yourself:
php cms buildWhat stays dynamic
Forms post to a small API at /api/forms/<handle>, so they work on static pages, with or without JavaScript. Sign-in and account pages run through PHP, and they are never cached as public pages. Everything a visitor only reads comes from a file.
Nothing personal in a built page
A build often starts from somebody's request, and what it writes is public. So it always renders as an anonymous visitor, even when the person who triggered it is signed in. Nothing about the editor can end up in a page.
What you do
Nothing. Publish and you are done. Editors preview drafts through a link that renders on request, for signed-in users only, so the static files only ever hold what is live.
Read more in the static builds documentation.