Code from an AI
Where to deploy a v0 project if not on Vercel
In short
A v0 project is not tied to Vercel: it is a plain React and Next.js app that runs on any host. Before you move it, work out whether your site is static or a server app, replace the parts that rely on the original platform (its own functions and storage), and move keys out of the code into secrets. Then upload the folder as an archive or import it from GitHub — Netrun builds the project and gives you a public HTTPS link.
v0 does exactly what it was built for: you describe a screen and get working React and Next.js code. The default next step it offers is a single deploy path, to Vercel, the company behind the generator. People look for a way to deploy a v0 project without Vercel for three usual reasons: the payment method does not fit, they want the site next to their other projects, or they simply do not want another account for one page.
The good news is that the code itself is not locked in. A move normally trips over three things: the app listens on the wrong port, parts of the project only work on the original platform, and API keys sit right in the files. The usual answer is to rent a server and deal with Node.js, nginx and certificates by hand. With Netrun you upload the code folder or connect a GitHub repository, and the build, the start and HTTPS are handled for you. Here is what to check in the project first.
Pull the v0 code into a normal project folder#
Code usually leaves v0 by copying the files into your own project or through a command in the interface. Collect everything into one folder with package.json, the sources and the Next.js config file side by side. From this point it is not a "v0 project" any more, it is an ordinary Next.js app and you can treat it like any other. Leave node_modules and .next out of the archive: dependencies are installed during the build.
Decide whether it is static or a server app#
Next.js can be two quite different things, and the whole deploy depends on which one you have. If the pages contain nothing server-side — just markup, styles and navigation — the site can be built into ready-made files: turn on static export in the Next.js config (output: 'export') and Netrun serves the result as a plain static site. If you have request handlers, a login, or data loaded on the server, keep the normal mode with next start: that is a server app.
Let the app take the port from the environment#
A server app has to listen on the port the platform hands it, not on a number written into the code or the start command. Next.js reads the port from the PORT environment variable by default, so usually there is nothing to change: just drop a hard-coded value such as -p 3000 from the start script if one crept in. A hard-coded port is the number one reason a build succeeds but the link opens blank.
Replace anything that only runs on the original platform#
Beyond Next.js itself, a hosting platform brings its own extras: server functions, key-value storage, a database, file uploads, handlers that run at the network edge close to the user. Those belong to the platform, not to the framework, and they will not work elsewhere on their own — to be honest about it, those pieces have to be rewritten as ordinary server code. Calls to the platform storage become a database next to your app or the persistent /data folder, and platform functions become plain request handlers inside your own application.
Check fonts and images#
Fonts and images in Next.js are processed at build time, not in the browser. If fonts are wired up through Next.js, they are downloaded while the project builds — that is normal, the build just takes a little longer. Images have two common snags: with static export the built-in image optimisation has to be switched off in the config or the build stops with an error, and images hosted on another domain require that domain to be allowed in the Next.js config, otherwise you get empty gaps instead of pictures.
Move keys into secrets and deploy#
Generated code often keeps keys for AI models and external services right in the files. Move them into environment variables: Netrun asks for the values during project setup and passes them in encrypted, so they never sit in the archive or the repository. Remember that in Next.js anything named with the NEXT_PUBLIC_ prefix reaches the browser and is no longer a secret. Then upload the folder as an archive or connect the repository — the platform builds the project and issues an HTTPS link, with build logs visible in real time.
The result: your v0 site lives at an ordinary HTTPS link, with no Vercel account and no rented server. On the free plan a site sleeps while nobody uses it and wakes up on its own when someone opens the link, so the first visit after a pause is slightly slower; if you need it always ready and want your own domain, the Pro plan fits. Reworked a screen in v0? Upload the new version and the link stays the same. Try Netrun.
Common questions
Do I have to deploy a v0 project on Vercel?
No. v0 gives you ordinary React and Next.js code that runs on any host able to build Node.js projects. The only lock-in is where you used the platform own extras, such as its functions or storage; everything else moves across as is.
Is a v0 project static or a server app?
It depends on what is inside. If it is only pages, styles and navigation, the site can be built as static files and served as they are. If there are request handlers, a login, or data loaded on the server, it is a server app and has to be started the normal way.
What do I do with the platform server functions and storage?
They have to be replaced: they belong to that specific platform rather than to Next.js, and they do not work anywhere else. Functions become plain request handlers inside your app, and storage becomes a database running next to the project or the persistent /data folder, whose contents survive a code update.
Why does the site build but the pages come up blank?
Most often the app listens on a port written into the code or the start command instead of the port from the environment variable. The second common cause is a call to a feature of the original platform that now fails. Both show up in the deploy logs in your dashboard.
How do I update the site after reworking a screen in v0?
Pull the updated code into the same folder and upload the new version from your dashboard, or refresh the project from GitHub if the code lives there. The public link stays the same, and your secrets and project settings are kept.
What about React, Vue, Next.js, Nuxt, Svelte or Astro?
Yes, all of them work. Upload the source code with your package.json — you do not need to build the project yourself or include the built output, the build happens on our side. If your framework can produce both static pages and a server build, either works: in server mode the app should listen on the port from the environment variable. One important detail: values baked into the built front-end are visible to any visitor, so keep real keys on the server side.
How is Netrun different from Vercel and Render?
Vercel is built for frontends and serverless functions — not every backend or Telegram bot will run there. Render is closer in purpose, but it is a foreign service that needs a foreign card. Netrun runs any code — a website, an API or a bot — accepts payment by Russian card and via SBP and offers support in Russian.
Can I pay with a Russian card or via SBP?
Yes. You can add funds with a Russian card or via SBP, even though prices are shown in dollars. Your card is charged the ruble amount at the current rate — no foreign card and no currency exchange on your side. Besides card and SBP we also accept cryptocurrency.