🏘️
One codebase, every customer.
SaaS hosting
One codebase serves every customer. What changes is how much of it runs outside the request.
Built with
Built by
Features
Benefits
Solutions
One codebase serving many customers, each of whom believes the application is theirs. PHP suits this better than its reputation suggests: Laravel ships subscription billing and queues as first-party packages, and Symfony runs the same background work through Messenger — the parts a subscription application would otherwise spend its first year building.
Billing runs belong in a worker
Trial expiry, usage metering, invoice generation, and digest mail all happen on a schedule, and none of them should happen inside a request. The jobs component runs long-running workers and cron jobs beside the web processes, on the same code and the same environment variables.
A billing run that takes 20 minutes takes 20 minutes in a worker, without a request timing out.
Growth is per component
Customer number 500 usually needs more PHP processes, not a bigger everything. Components scale one at a time, so the database can stay where it is while PHP grows.
There are no persistent connections on the platform, so live dashboards and collaborative editing are out. Polling and mail from a worker cover most of what a subscription application actually needs there.
Trust
An honest account.
