npm install and npm run build, then zip what's inside the build folder (dist or out) and upload the zip. Apps that only talk to services like Supabase or Firebase from the browser work fine. Apps with their own server code need a server host.First: does your app need a server?
Most AI-built apps are a front end that runs in the visitor's browser. Those can be hosted anywhere as plain files. Check for these signs of server code:
- A folder called
api,serverorfunctionswith code that reads secret keys - In a Next.js project (v0 exports are usually Next.js):
route.tsfiles, server actions ("use server"), or pages that fetch data with secrets - A database password or a secret API key anywhere in the code
Supabase and Firebase are fine: their browser keys are meant to be public, and your data is protected by the rules you set in their dashboards. Secret keys (OpenAI, Stripe secret keys, database passwords) are not. Anyone can read a website's code, so never publish those.
Lovable
- Connect the project to GitHub from Lovable, then download the repository as a ZIP from GitHub (Code → Download ZIP) and unzip it.
- Install Node.js from nodejs.org if you don't have it. In a terminal inside the folder, run
npm installand thennpm run build. - A
distfolder appears. Open it, select everything inside it and zip those files, soindex.htmlsits at the top of the zip. - Upload the zip to Droply and pick a name.
Bolt
- Download the project from Bolt as a ZIP and unzip it.
- Run
npm installandnpm run buildin the folder. - Zip the contents of the
distfolder (orbuild, depending on the template) and upload it.
v0 (Next.js)
- Download the code from v0 and unzip it.
- Open
next.configand addoutput: "export". This tells Next.js to produce plain files. - Run
npm installandnpm run build. Next.js writes the site to anoutfolder. If the build complains about server features, the app needs a server host. - Zip the contents of
outand upload it.
Pages that break when you refresh
Apps with several screens (like /dashboard or /settings) only have one real file,index.html. On many hosts, refreshing /settingsgives a 404. Droply sends any address without a file extension to your app's index.html, so refreshing works without extra setup.
Updating after more changes
Rebuild, zip the build folder again, and use Update on the project in your dashboard. The link stays the same, so testers and clients always see the latest version.
Common problems
- Blank white page: you zipped the project folder instead of the build folder. The zip should contain
index.htmland anassetsfolder, notsrcandpackage.json. - Login doesn't work: add your new address (for example
https://myapp.droply.page) to the allowed URLs in Supabase or Firebase authentication settings. - Images missing: files in
publicare copied into the build automatically; files referenced from elsewhere may not be. See 7 fixes for sites that break online.