Astro Integration
Astro is the first-class frontend integration. The CMS itself is frontend-agnostic: @kenresoft-cms/astro is a typed client for its public API, plus a same-origin proxy for authentication.
Which workflow
Section titled “Which workflow”| I want to | Run |
|---|---|
| Start a new website | npm create @kenresoft-cms@latest my-site -- --astro |
| Add the CMS to an existing Astro project | npx @kenresoft-cms/create astro |
| Refresh an existing integration | npx @kenresoft-cms/create astro --update |
| Install the CMS itself | npm create @kenresoft-cms@latest my-cms (not an Astro command) |
These are different commands with different results. The first two create or modify a website. Only the last creates a CMS.
Three things, three update schedules
Section titled “Three things, three update schedules”- The CMS (API, admin, migrations):
pnpm run update, inside the CMS project. It never touches your website. - The Kenresoft integration files in your website:
npx @kenresoft-cms/create astro --update, inside the website. It never touches the CMS. - The
@kenresoft-cms/astropackage: the--updatecommand above moves it to the newest compatible version.
What is in the box
Section titled “What is in the box”- API client: entries, media, forms, pages, settings, global variables.
- Authentication:
client.auth, on the CMS’s single identity system. - Same-origin proxy:
createCmsProxy(). - Live Preview: render drafts through your own templates.
- Rendering pages: route resolution and block renderers.
Rendering mode
Section titled “Rendering mode”A statically generated site fetches content at build time, so published changes need a rebuild. A server-rendered site (output: 'server' plus an adapter) reads current content on each request, which is what the starter uses and what editors expect. The proxy, sign-in and Live Preview all need on-demand rendering.
Other frameworks
Section titled “Other frameworks”Nothing in the client is Astro-specific: it is a thin fetch wrapper. Next.js, Flutter or any other client can call the public API directly. There is no separate framework-generic SDK yet.