Design decisions#
Why Whoobe is built the way it is. Each page states the decision, the reasons, what it costs you, and when it would be revisited. They are
short on purpose; the long design history stays in docs/plans, and the pages say which plan to read for it.
| Decision | In one line |
|---|---|
| One workspace per organisation | The tenant and the security boundary is a whole installation, not a row in a shared one |
| A simple stack | Node, PostgreSQL and S3: no queue, no cache service, no search engine to operate |
| Credentials stay on the server | Editors, browsers, sites and apps use integrations without ever holding the third party's secret |
| Client access without user accounts | Applications use Whoobe with a server key or your identity provider's token; Whoobe creates no end users |
| The data model is data | Content types are defined at runtime and stored as data, Pimcore-style, without a deployment |
| Draft is never public | One shared rule decides what the public surface may return |
| One renderer, many outputs | The editor preview, the published site and the app come from the same content tree and renderer |
| No automation engine of our own | Forms and the gateway plug into Activepieces, n8n or any webhook |
| Self-hosted and MIT | You run it, you own the data, no usage-based fee |
How to read them#
Each page has the same parts: Decision, Why, What it costs, When to revisit, Where it shows in the product. If you are evaluating Whoobe, the What it costs sections are the ones to read: they are the trade-offs you accept.
Last updated