Uploading Your Site (Every Tech Stack)
Upload your site as a single .zip from the Deployments tab. BillionBiz hosts static files — the kind every modern framework produces — for any tech stack that can produce a static build.
You upload your website as a single .zip file from the Deployments tab. BillionBiz hosts static files — the kind every modern framework produces when you run its build command. It does not run server code (PHP, Node, Python, Ruby, Java); if your framework can produce a static build, it works here.
Screen: Go to your site → Deployments tab → Browse (or drag your zip onto the upload zone).
The universal rules
- Your
index.htmlmust be at the top level of the zip. If your zip has exactly one top-level folder, BillionBiz unwraps it for you — but the reliable approach is to zip the contents of your build output, not the folder itself. - Include every asset your pages reference (CSS, JS, images, fonts), using relative paths (
./style.css, not/style.css). - For framework apps, zip the contents of the build output folder — never your project source.
- Static files only — no server-side code executes.
Limits
- Up to 100 MB and 10,000 files per upload.
Build command & what to zip, by framework
| Framework | Build command | Zip the contents of… | Notes |
|---|---|---|---|
| Vite (React/Vue/Svelte) | npm run build | dist/ | Set base: "./" in vite.config for relative assets |
| Create React App | npm run build | build/ | Add "homepage": "." to package.json |
| Next.js (static export) | next build with output: "export" | out/ | Static export only — SSR / API routes do not run |
| Angular | ng build --configuration production | dist/<project>/browser/ (v17+) | |
| Vue CLI | npm run build | dist/ | Set publicPath: "./" in vue.config.js |
| Nuxt (static) | npx nuxi generate | .output/public/ (Nuxt 3) | Use generate, not the Node server build |
| Astro | npm run build | dist/ | Default static output (no SSR adapter) |
| SvelteKit | npm run build (with adapter-static) | build/ | Install @sveltejs/adapter-static first |
| Gatsby | gatsby build | public/ | Static output only |
| Hugo / Jekyll / Eleventy | hugo · jekyll build · npx @11ty/eleventy | public/ · _site/ · _site/ | Pure static — ideal for this host |
| Plain HTML / CSS / JS | (no build step) | your files, with index.html at root | Use relative asset paths |
Single-page apps (SPAs): if your site uses client-side routing (React Router, Vue Router, etc.), turn on SPA mode in the site's Settings tab. BillionBiz will then serve index.html for any path your app handles, so deep links and page refreshes work.
PHP / WordPress?
PHP cannot run on static hosting. Use a static-export plugin (for WordPress, e.g. Simply Static) to generate an HTML version of your site, then upload that output. The same applies to any database-backed or server-rendered app — Next.js SSR, Nuxt SSR, and SvelteKit with a Node adapter also need a server; only their static-export modes work here.
Why upload through BillionBiz (not directly to storage)
Your zip is sent to the BillionBiz backend, which validates it thoroughly before a single file is published. Your browser never writes to storage directly, and there is no public upload surface to abuse. On the server, every upload is checked for archive integrity, unsafe paths (directory-traversal and symlink attacks are rejected), file count, and size — protecting both you and the platform. Only after it passes is your site published.
Next steps
- Creating & Deploying a Site — the promote and rollback lifecycle once your build is uploaded.
- Connecting a Custom Domain — put your own address on the live site.
