A website should still be a document unless it needs to be software.
Sights prerenders ordinary content routes into portable files. Client behavior is opt-in, page-scoped, and declared by the component or shell capability that needs it.
The build includes the unglamorous parts that make a site real.
Every artifact comes from the same validated route and content model instead of being maintained as an unrelated afterthought.
Static pages and interactive tools keep different runtime contracts.
The custom calculator in this product site proves that one interactive component does not need to turn every route into a client application.
| Capability | Ordinary content pagePrerendered document | Custom calculator pageDeclared interactive island |
|---|---|---|
| Prerendered HTML | Yes | Yes |
| Useful before client code | Yes | Yes |
| Component runtime loaded | No | Yes |
| Runtime on unrelated pages | No | No |
| Server execution required | No | No |
One resolved model drives every output.
Static-first does not mean pretending a form submission is static.
Sights forms are authored as finite validated fields in page JSON, but submission behavior is selected through a named trusted action. The ordinary demo action validates and redirects without storing values or sending email; its isolated Cloudflare staging action proves the real provider boundary with synthetic data.
The optional Cloudflare adapter keeps Turnstile verification, D1 storage, queue delivery, email recipients, retention, provider bindings, and secrets in deployment-owned trusted code—not in page JSON.
- Already realStatic routes, declared motion, dropdown navigation, custom client components, local assets, metadata, discovery, redirects, and audits.
- Explicitly separateProvider storage and notification adapters are opt-in. Arbitrary endpoints, page-authored scripts, recipient addresses, and secret values remain prohibited in content.
- Visible capabilityGenerated form and capability manifests expose which routes need client and server behavior without exposing private configuration.
Inspect a JSON-authored form with an explicit delivery path.
The example exercises all initial field types, server-equivalent validation, progressive enhancement, native POST fallback, and environment-selected trusted actions.