AstroBaaS

CMS · API · Shop — one Node process you own

Pour it into
whatever you built.

AstroBaaS is the content, the catalogue and the checkout behind your site. It answers JSON over HTTP and holds no opinion about the front — Next, Astro, a template you bought, or the thing you vibe-coded on Sunday. Same data, whatever you pour it into.

GET /api/products?limit=24 → 200 · {"success":true,"data":[…],"meta":{"total":436,"media_base":"https://cms.example.com"}}

The same liquid

One backend.
Any front you like.

Headless means the shop and the CMS stop being the same decision. Build the front end however you want to build it; this answers to all of them the same way.

Next.js
Astro
Nuxt
SvelteKit
A bought template
Whatever you vibe-coded

Already built, already running

What it does
before you write anything.

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.
Commerce
Products with variants, stock, orders, customers, shipping zones, coupons, tax classes and hosted checkout. Money is integer cents, computed in one place.
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.
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.
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.
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.
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.
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.

Not a demo

It is already
somebody's Monday.

Four sites in production, and the interesting thing about them is how little they have in common: two opticians in Greece, a publication with no catalogue at all, and a photo studio where the media pipeline is the whole product. Ten more are being built on it now.

Optical retail

optikigwnia.gr

Frames, lenses and contact lenses, with prescriptions validated at checkout. The optical module was built for this shop and everything in it came from a real Tuesday.

Optical retail

gr-optics.com

The second shop on the same core, the same modules and its own catalogue — the install that proved a vertical could ship to two businesses without either one forking it.

Publication

A blog

No catalogue, no checkout, no commerce module. Posts, categories, scheduled publishing and a feed — the CMS half of it standing on its own, which is the case that proves it is not only a shop system.

Photography

A photo studio

Galleries and commissions, where the media pipeline is the whole product: full-resolution originals kept and downloadable, web-ready sizes generated at upload, and EXIF stripped before anything is published.

4sites live in production today — two opticians, a publication and a photo studio
10+more being built on it right now
1,106live assertions run against every storage driver, all three, on every push
221production dependencies, licence-audited on every pull request

The deal, plainly

Free to run.
Paid to specialise.

GPL-3.0 · free forever

The core

Everything on this page. Clone it, run it, change it, sell what you build on it. One process, your server, your database, your data. No seat count, no metering, and nothing that stops working if a company does.

Commercial modules

The specialised parts

Trades whose products need more than a generic catalogue — opticians first, with prescriptions, frame geometry and fit tolerance. They install as plugins and are how the core stays funded and free. No licence check ever gates the core.