Static pages
Static pages engine (HTML/HBS)
Author SEO-friendly pages with Handlebars, recursive partials, and zero build steps. Routes are auto-wired from files under src/templates/.
Why this feature
SSR frameworks (Next/Nuxt) are overkill for SEO‑friendly content. Keep it simple: static HTML/HBS renders fast, builds are instant, and DX stays smooth.
Common use cases
- Single codebase for your app and SEO pages—no separate site.
- AI Agents natively author HTML + Handlebars partials.
- Docs, landing, changelog, blog‑style content without JS stacks.
Value
Spend less time fixing TypeScript or hydration errors—agents and humans focus on content. Auto‑wired routes, reusable partials, and HOT deploys with Copy‑to‑Backend.
Overview
- Serve
.htmlas-is and.hbsvia Handlebars rendering. - Recursive partials from
src/templates/partials/(subdirectories supported). - Auto-wired routes: file path ↔ route path (e.g.,
src/templates/docs/pricing.html→/docs/pricing). - Reusable head block via
{{> head}}partial with SEO/meta props; supports runtime head injection viaINJECT_HEAD_TAGS.
Quickstart
- Add a page: create
src/templates/your-page.hbs. - Use partials from
src/templates/partials/with{{> your-partial}}. - Visit
/your-page. For nested paths, mirror folders undersrc/templates/.
Handlebars specifics
- Both
.htmland.hbssupported; helpers includeabs_url. - Head partial: use
{{> head title=... description=... }}; SEO images/scripts supported. - Dynamic data may be injected by the route handler; keep pages mostly static for simplicity.
Deep dive: docs/static-pages/handlebars-support.md
HOT deploy templates
Deploy updated templates to a running backend in seconds using the Copy-to-Backend module.
npm run ci:copy-templates
- Uploads are persisted and restored on startup.
- Ideal for iterating on landing pages, pricing, docs, and changelog content.
- See: Copy-to-Backend guide and the agent playbook at
docs/static-pages/.agent.md.