Frontend projects
A static build from any toolchain that emits a folder with an entry document can be deployed on its own — no backend required, served from memory like everything else.
Supported toolchains
| Framework | Build output |
|---|---|
| Vue | dist/ |
| React | build/ or dist/ |
| Angular | dist/<project>/ |
| Svelte / SvelteKit static | build/ |
| Astro | dist/ |
| SolidJS | dist/ |
| Preact | build/ |
| Next.js static export | out/ |
| Nuxt generate | .output/public/ |
| Plain HTML | the folder itself |
next export or nuxt
generate. An SSR build expects a Node server at runtime; deploy that as a backend project instead.
Creating one
In New project, choose Frontend as the type
and point the source folder at your build output — the folder containing
index.html, not the project root.
There is no starting file to set: a static project has no entry point to execute, only an entry document to serve.
dist/ deploys exactly as out-of-date as it is.
Client-side routing
Single-page applications route in the browser, so a deep link like /settings/profile
has to resolve to your entry document rather than 404. The runtime serves the entry document for unmatched paths,
which is what a static host has to do for SPA routing to work.
Hash routing works without any of this, since the path never leaves the browser.
Full-stack: a frontend attached to a backend
The other shape. A backend project can carry a frontend build alongside it, grafted in at a path you choose and served by your own server code.
Point the frontend folder at your build output and set the destination path. Both are packed and encrypted together, and a push deploys them as one artifact — so the API and the UI can never be out of step with each other.
| Frontend project | Backend with frontend | |
|---|---|---|
| Runs code | No | Yes — your server |
| Starting file | Not used | Required |
| Serves the UI | The runtime | Your own server code |
| Deployed together with an API | No — separate project | Yes — one artifact |
Same guarantees
A static project is encrypted, delivered and served exactly like a backend one: AES-256-GCM at rest, decrypted into memory, never written to disk as readable files. There is no reduced mode for frontends.