For engineers
A content API you did not have to write.
The model marketing builds arrives in your repository as a typed client. It autocompletes, it type-checks, and nothing anyone does on the content side can turn your build red.
The fields from that collection, arriving in the editor as typed properties on the generated client.
Set up the clientWhat changes.
- Typed from the model, not from a guess
- A Vite plugin generates the client from the live content model. Selects arrive as unions, references as the entries they point at, and the whole thing updates as the model does.
- Schema changes are information, not incidents
- A deleted field becomes a deprecation in the generated types and keeps serving its last value. You find out in your editor, not from a failing pipeline at 5pm.
- No CMS code to maintain
- No schema files in your repository to review, no admin UI to keep running, no migration to write because someone wanted a subtitle.
- Rendering stays yours
- Stet is not a page builder and not a host. Your app renders your content, so previews and draft views are yours to build with the same client.
- Analytics through your own infrastructure
- Events post to a route in your app and are enriched server-side. Type-safe at the call site, immune to ad-blockers, and never able to throw in the browser.
- Open source, self-hostable
- Run it on your own Cloudflare account if you would rather. The hosted version is a convenience, not a hostage situation.
The parts you will live in.
Everything is on every plan, but these are the ones that will matter to you first.