Louise CMS — a V8-native, inline edit-on-the-live-page CMS for Cloudflare Workers. Framework-agnostic core primitives (cms, db, commerce, email, queues), a SolidJS + ProseKit inline-edit client, and the daisyUI editor theme.


Keywords
astro, cloudflare-workers, cms, d1, edge, inline-editing, prosekit, solid-js, solidjs, typescript
License
MIT
Install
npm install louisecms@0.11.0

Documentation

Louise Toolkit

Everything you need to build editable sites on Astro + Cloudflare Workers — content, commerce, media, forms, auth, and AI, as composable V8-native primitives.

Editing is the headline: no separate admin app, no JSON forms for prose. Log in and the live site becomes editable in place — text where the text is, structured sections through your own components, and back-office work in Louise Settings.

Documentation · Quickstart · Is Louise for you? · louise-toolkit


Louise is a toolkit for building sites on Astro + Cloudflare Workers — the whole surface, not just content. Dependency-injected primitives — content, db, media, forms, commerce, email, queues, auth, AI, analytics, realtime, workflows — plus a SolidJS + ProseKit inline-edit client and the editor theme, published as one tree-shakeable package. The core primitives are framework-agnostic (they run in any Worker or a unit test); the batteries — the client, the theme, and the Astro adapter — target Astro on Cloudflare.

Adding editing to an app you already have? pnpm add louise-toolkit.

Starting a new site from scratch? Reach for Astroid, the opinionated meta-framework built on this one: pnpm create astroid my-site scaffolds the whole thing. It lives in its own repo — Louise stays unopinionated, and the opinions live there.

Why Louise

  • A whole toolkit, not a plugin. Commerce, forms, media, auth, AI, queues, email, realtime, and workflows are first-party primitives — not third-party add-ons. Editable content is one of them.
  • V8-native. No Node runtime, no React on the server. Everything runs in workerd / Cloudflare Workers and deploys to the edge; published pages ship no editor JS.
  • Edit in place. Editable regions carry a data-louise-field marker; in edit mode the client makes each one editable where it lives. Rich text is a real ProseKit editor.
  • Bring your own bindings. D1, R2, Queues, Email are passed in — Louise has no opinion about your schema or your auth, and never dictates your markup.
  • Tree-shakeable. One ESM package with granular subpath exports; import only the primitive you need, and pull peers only for what you use.

Repository layout

This is a pnpm workspace driven by the Vite+ (vp) toolchain.

packages/
  louise/          # louise-toolkit — the published library
    src/core/      # content, db, media, forms, auth, commerce, email, queues, ai, analytics, realtime, workflows, browser, security, health, worker, editor, errors
    src/client/    # the inline edit client + ProseKit editor + Louise Settings (registry-driven settings surface)
    src/theme/     # the "louise" daisyUI editor theme (fonts, CSS)
  louise-astro/    # @louise-toolkit/astro — the optional Astro adapter (middleware, Actions, loaders)
workers/
  site/            # louisetoolkit.com — Astro on Cloudflare Workers: the marketing site, itself built with Louise Toolkit
  docs/            # docs.louisetoolkit.com — standalone Starlight; served by the same worker by Host
  sandbox/         # sandbox.louisetoolkit.com — a live, write-capable demo that resets nightly

Develop

Louise uses Vite+ — install it once:

curl -fsSL https://vite.plus | bash

Then, from the repo root:

vp install          # install the workspace
pnpm build          # pack the library (vp pack) + build the site (astro build)
pnpm test           # run the library's Vitest suite
pnpm check          # Oxlint + Oxfmt + type-aware lint & type-check (TS7) over the library's TypeScript
pnpm lint:astro     # Biome lint over .astro files
pnpm lint:solid     # oxlint + eslint-plugin-solid over the SolidJS client
pnpm knip           # dead-code check: unused files & exports across the workspace
pnpm typecheck      # tsc over the library
pnpm dev            # run louisetoolkit.com locally (marketing + Starlight docs)

The library is packaged with vp pack (tsdown/Rolldown under the hood: multi-entry .d.ts generation, tree-shaking). See packages/louise for the package readme and docs.louisetoolkit.com for the full guide and API reference.

Roadmap

Louise is pre-1.0 and dogfooded on 4 production sites. Astroid and create-astroid have shipped (both pre-1.0) and now develop in their own repo. The current push — Cloudflare platform depth, Astro-native APIs, and an agent-editable MCP server — is tracked in the open:

Contributing

Issues and PRs are welcome — see CONTRIBUTING.md for the dev setup (vp), the lint/format split, and the changeset + PR conventions. Because Louise is pre-1.0, the many subpath exports may still change between minor releases; breaking changes ship as a minor bump and are called out in the changeset.

Built with

Louise is built on — and grateful for — a lot of excellent open source. Sincere thanks to the authors and maintainers of the projects that make it possible:

Platform & frameworkCloudflare Workers Astro

The in-place editorSolidJS ProseKit TanStack Query Harper

Data, auth & validationDrizzle ORM better-auth Standard Schema

Rendering & assetsPhosphor Icons Roboto Flex resvg ultrahtml

StylingTailwind CSS daisyUI

Build & qualityVite+ Rolldown Vitest oxc Biome TypeScript

Also gratefully used: @cloudflare/puppeteer (Browser Rendering) and @vercel/stega (visual-edit markers). Bundled fonts and icons ship under their original licenses — see THIRD_PARTY_NOTICES.

License

MIT © BowenLabs