Many sites, one deployment
Isolated twice: in the app and in PostgreSQL.

One TypeScript kernel for sites, shops and business apps, or just the backend behind your own.
Isolated twice: in the app and in PostgreSQL.

One service at a time. Visitors see no gap.
In the kernel, not in a plugin.
SecuritySigned and sandboxed. A crash stays inside it.
Agents work through scoped tokens you mint in the admin.
Two Compose files and an .env. Secrets are generated on the first boot.
Set up
Where is your database?
The wizard runs in the browser: database, language, administrator, platform name.
Add a site
A new site is private until you open it. Preview it first, then make it public.
FormsInstall
Contact and booking forms, with submissions in the admin.
api database:read jobsPlugins install from the admin. Each declares what it may do, and a version that asks for more waits for your approval.
System updates
The updater is running and checks for new versions every minute.
New versions install themselves, one service at a time. A breaking one waits for your Install button; a failed one rolls back.
REST, GraphQL and realtime, on any path you choose.
# sign in, then read any collection $ curl -X POST https://example.com/api/auth/login \ -d '{"email":"you@example.com","password":"…"}' $ curl https://example.com/api/collections/posts \ -G -d limit=10 -d sort=-createdAt \ -H "Authorization: Bearer <token>" # or GraphQL, and live updates over a socket POST https://example.com/api/graphql WS wss://example.com/api/ws
API_URL=https://example.com/apiChange one setting and every route moves with it.Six checks on every request. Nothing about you leaves the server.
Each save keeps the previous version. Restore any of them with one click.
Mark a field as localized and edit it per language. The locale switches at runtime.
Automatic from Let's Encrypt or another ACME authority, or upload your own. Keys are encrypted, and you are warned before expiry.
See what a restore will change before you run it. A safety snapshot is taken first.
Scheduled jobs with their run history, and redirects managed in Settings.
WebSockets at /api/ws, queues, a managed cache and signed webhooks.
Requests per second on the same 2 vCPU server, with the same data and no response cache.
Method, data and the full comparisonRecords, media, old links and passwords arrive intact.
Node.js 22 and Git. The wizard does the rest.
MIT licensed. Add only the plugins you need.
Sponsor the work, or buy the team a coffee.