AI CodingDeveloper Tools

AI Built the Website. Where Should You Publish It?

AI Builders often produce things that sit somewhere between a document and a product: a slide deck viewable in the browser, an event landing page, an interactive report, or a small demo to validate an idea. AI can generate the page quickly enough, but when it comes time to share it with someone, you still need a link everyone can open.

Between “it works on my machine” and “someone clicks a link and sees it” lie a few steps: the page must be placed somewhere reachable from the public internet, served over HTTPS, and updated smoothly whenever the content changes. The page itself is already built — someone still has to handle the publishing.

Cloudflare, Vercel, Koyeb, and your own VPS can all give you that link, but what they take off your plate varies. Some handle file storage and traffic on your behalf; some pull every code change into a full publishing pipeline; you can also leave everything to your own server.

Before comparing these options, first decide whether the page actually needs a backend. A purely static page is a finished deliverable — the browser downloads it and renders it locally, no server-side computation required. I increasingly suspect that, now that AI has slashed the cost of building a web page, the most common form of waste in the publishing step is spinning up a persistent backend for a page that has no backend at all.

For purely static pages, start by deciding between Cloudflare and Vercel

Start with what happens when a visitor opens the page.

If every operation — running calculations, rendering charts, advancing slides — happens inside the browser, the page is purely static. The browser downloads the HTML, CSS, JavaScript, and images and executes them locally; no cloud computation or database is involved. A static-file distribution platform can handle hosting.

The boundary shifts when the page needs to write data or call a sensitive API. For example, if you use the remote database Turso, you cannot embed the credentials in the frontend app.js. Anyone inspecting what the browser receives can extract that key and potentially read or write the database. Operations like these need a trusted backend to act on the page’s behalf.

The same static site folder obtains a public URL through four paths

Once you have confirmed the page needs no backend, the choice becomes much simpler. If you just want a shareable HTTPS link as quickly as possible, go straight to Cloudflare Workers Static Assets.

After you upload your files, Cloudflare replicates them to nodes around the world and caches them. When a visitor opens the link, a nearby node serves the file directly. Because requests matching static assets skip Worker execution by default, there is no server sleep or cold start delay.

According to the Cloudflare Workers pricing documentation, requests for static assets are free and unlimited, and there are no data-egress charges. You can upload files through the dashboard drag-and-drop interface, Wrangler, or GitHub. For a landing page or slide deck that needs to stay online indefinitely under unpredictable traffic, this is the most worry-free default.

When the project involves multiple people revising and reviewing, Vercel’s advantages stand out more. Cloudflare solves the problem of putting finished work online reliably; Vercel weaves code changes, previews, and production releases into a single Git workflow.

Vercel is the company behind Next.js, so it is natural to associate the two. But you do not need to migrate your project to Next.js to use Vercel. The framework support documentation lists Vite, Astro, SvelteKit, and several other options. If your project uses no framework at all, the deployment guide and build configuration documentation allow you to skip the build step and publish static files directly; Vercel Drop even lets you drag a folder into the browser.

What truly sets Vercel apart is Git collaboration. Every commit or Pull Request can generate an independent Preview URL so collaborators can see the live page before merging, and mistakes can be rolled back quickly. Vercel Functions do scale to zero when no requests arrive, but a static page does not invoke Functions at all. The main reason to choose Vercel is preview and version management, not the sleep mechanism.

For backend needs or existing servers, consider Koyeb and VPS

If the page will soon grow a Python or Node.js backend or needs WebSocket long-lived connections, Koyeb lets you keep frontend and backend under the same runtime.

Koyeb is not a dedicated static-file platform. The service reference documentation describes it as managing persistently running Web Services on instances; the platform comparison explains that a CDN sits in front of those services. When hosting a static page on Koyeb, a container still runs Nginx or an application process to respond to requests.

An idle instance can stop according to scale-to-zero rules. Deep Sleep wake-up typically takes 1 to 5 seconds; Light Sleep uses snapshots to cut that to roughly 200 milliseconds, but this feature remains in public preview. Making a visitor wait several seconds just to see a static page is unnecessary. The extra cost is only worth absorbing when a backend will go live soon and unified deployment simplifies operations.

The other scenario is when a VPS is already running. A VPS is a Linux virtual server you manage yourself. When the server is already hosting other workloads, adding a static directory through Nginx usually does not meaningfully increase the compute bill. The Nginx Beginner’s Guide covers the basics: serving web pages and images from a local directory. Paths, response headers, and access logs all remain under your control.

Spinning up a new VPS just to share a web page is a different calculation. Beyond the monthly cost, you also need to configure Nginx, obtain an HTTPS certificate following the Certbot official instructions, set up automatic renewal, and verify it with certbot renew --dry-run. From that point on, system patches, monitoring, backups, and failure recovery are your responsibility. Free software does not mean zero operations.

A One-Minute Decision Guide

One last boundary matters more than the platform choice: the moment a page needs sensitive credentials for Turso or any third-party service, you can no longer keep all the logic in the browser. Add a trusted backend layer first, then decide where it should run.