Shipping Externa Core 1.0 — notes from the maintainer
Tagsexternalaravelopen-source
On 21 September 2026 I cut Externa Core v1.0.0 — the first stable GA after the public betas. Full operator notes live on the Externa blog and in the changelog. This post is the personal side: why the project exists, and what “stable” meant for me as maintainer.
Why Externa
I wanted a self-hosted, MIT-licensed headless CMS that feels native to Laravel operators: admin UI, Public CMS REST (/api/v1), GraphQL, Spatie RBAC, files, outbound webhooks — without forcing a SaaS tenancy model. Frontends stay free to be Next, Nuxt, or whatever; content stays on your server.
That stack is what I already ship for clients. Externa packages the boring parts so I (and anyone else) can reuse them.
What GA changed in practice
The GA cut was not a marketing sticker. Install went Packagist-first (composer create-project qiick/externa-core), Docker/GHCR quick-deploy landed for Compose users, and outbound webhooks refuse delivery without a signing secret — a real behavior change vs early betas. Admin polish (block reorder, field control heights) shipped in the same tag.
If you run Externa today, start from current docs (quick start, upgrade) — Core has moved past 1.0.0. Treat the GA post as history; treat externa.qiick.io and docs as source of truth.
Where to go next
- Project page on this site: /projects/externa
- Product site: externa.qiick.io
- Source: qiick-io/externa-core
I keep product release notes on the Externa site so operators get install steps and breaking changes in one place. Here I write about the decisions behind the work.