AstroBaaS

Already built, already running

What it does
before you write anything.

Every label below names a real set of endpoints, not a marketing category. The second paragraph in each is the part that usually only turns up after you have shipped.

Content
Posts, pages, categories, a sanitising editor, scheduled publishing and revisions. Content is HTML, not a block tree, so anything downstream can just render it.Sections and patterns are inserted as allow-listed CSS classes rather than a parallel block model, so the stored value stays the HTML string every consumer already reads. Any page can be set as the site home page.
Commerce
Products with variants, stock, orders, customers, shipping zones, coupons, tax classes and hosted checkout. Money is integer cents, computed in one place.It ships in the GPL core and is switched off on a fresh install, so a site that is not a shop has no shop in it. Shipping zones match on country and postcode, most specific winning. Payment providers are plugins, and a manual method can never shadow a gateway — a shop cannot accept as unpaid an order it believes was charged.
Media
Every upload records its dimensions and generates a fixed set of WebP sizes at 400, 800 and 1600 — so your storefront builds a srcset instead of running an image optimizer.The original is kept and downloadable, with its EXIF stripped losslessly: the compressed image data is copied through byte for byte, so it is still the master copy, but a phone photo stops publishing the GPS of wherever it was taken.
Languages
English, Greek and German in the admin and on the storefront, and any other you add. Greek search matches Latin spelling in both directions, because half a Greek catalogue is typed each way.Plurals go through Intl.PluralRules rather than an n === 1 check. The language a visitor reads and the language a piece of content is written in are separate ideas, and the API treats them that way.
Plugins
A module can add API routes, admin screens, storage, payment providers and migrations without touching core. That is how the optical vertical ships separately from the CMS it runs on.Twenty-one documented hooks. A plugin cannot widen the CSRF or auth posture of a core route — it was able to once, and a working cross-site upload was the proof. Its routes are confined to /api/plugin/.
Traffic
A redirect map the shop owner edits, and a report of the dead addresses costing money — sorted by how many arrived carrying an ad click id.Recovery pages stay 404, never a soft 200, and a 410 is never quietly turned into a redirect. A rule can never touch /admin or /api: refused at save time, at match time and in the middleware.
Operations
A health check that encodes a test image, writes a probe file and counts on the real rate limiter, then answers 503 when any of it is broken. A deploy script can just assert it.It reports which plugins were requested against which actually loaded, and whether the CMS knows its own public address — the two failures that looked healthiest from outside.
Storage
A JSON file, SQLite, or libSQL/Turso. Same API, same tests, chosen with one environment variable — start on a file and move when it matters.The full suite runs against all three on every push, as a differential test: two implementations of one filter is two chances to disagree, and a disagreement there is silent.

What it deliberately does not do

The list that keeps
the rest of it small.

Each of these looks attractive and each one would cost more than it returns. Saying so here is cheaper than saying it in a support thread.

No block tree
Content is an HTML string that every downstream consumer already reads. A parallel block model would break that for every existing integration, and sections are allow-listed CSS classes precisely so it does not have to.
No multi-tenancy
One database per site is simpler and safer, and the deployment story already supports it. Tenancy in core would touch every query in the codebase, forever.
No GraphQL
The REST surface is documented, contract-tested and stable. A second API is a second thing that has to stay true.
No workflow builder
Webhooks and plugins cover the real cases. The last twenty per cent of a visual workflow builder is where all of them die.