Creating a project
A project is one deployable thing on one server: a site, an API, a worker.
Creating one#
Projects → New project, then:
- Name — how it appears in the panel.
- Server — which connected machine it deploys to.
- Runtime — how it should be run. This cannot be guessed; pick the one that matches your application.
- Environment — production, staging or preview. This is a label used for filtering; it does not change deployment behaviour.
Runtimes#
| Runtime | For |
|---|---|
static |
Plain HTML/CSS/JS, or the built output of React, Vue, Svelte, Astro, or any other bundler |
node_pm2 |
A Node application kept alive by PM2 |
express |
An Express application |
laravel |
A PHP/Laravel application |
docker |
Anything you ship as a container |
Choosing between static and a Node runtime#
This is the one people get wrong. The question is not what you wrote it in, it is what runs in production:
- If your build produces a folder of files that a web server just hands out —
dist/,build/,out/— that isstatic. A React app is static once it is built. - If a process has to stay running to answer requests, that is
node_pm2orexpress.
A plain folder of index.html, style.css and script.js with no build step at
all is also static.
The runtime must be one of the five above, spelled exactly. If you are calling the API directly rather than using the panel, that error means the value sent was not on the list.
Protecting a project#
Anything customer-facing should be marked protected. On a protected project, deploys, rollbacks and deletions wait for someone else to approve them. See Approvals for risky actions.
This is worth doing before your first busy week, not after your first bad deploy.
Next#
Raise a ticket and someone will pick it up. Sign in with the same account you use for the panel.
Raise a ticket