Host AI-Generated Websites Without Git

How to Host AI-Generated Website Files Without a Git Pipeline

An AI tool can build a useful website in minutes, but the publishing step can take longer. You get a folder full of HTML, CSS, JavaScript, images and documents. The suggested next step then involves Git, repositories, build settings, branches and deployment logs.

That process suits software that a team maintains. It is too much when you only need to show a client a proposal, dashboard, prototype or interactive report.

In short, you can host a finished static folder without Git or a deployment pipeline. This guide uses Cloudflare Pages Direct Upload, which accepts a folder by drag and drop. The guide shows you how to:

  • Make sure that the project suits static hosting
  • Compare upload-based publishing with Git deployment platforms
  • Publish the folder and protect a client review link
  • Update the site without a change to the link
  • Avoid broken assets, exposed secrets and other common mistakes

What Counts as Static Website Hosting for an AI-Generated Website?

A static website is a folder of files that browsers load without server-side application code. The site can still be interactive: JavaScript runs menus, filters, charts, calculators and animations in the visitor’s browser.

A typical folder looks like this:

File or Folder Purpose Static Hosting Ready?
index.html The home page and usual entry point Yes
styles.css Colors, spacing, fonts and layout Yes
app.js Browser-side behavior Yes
assets/ Images, icons, fonts and media Yes
data.json or report.csv Data that browser scripts load Usually
Server functions or database code Private processing on a server No

If the project contains only the first five types, it is easy to host. As MDN explains, even a compiled frontend application ends up as HTML, CSS and JavaScript files that a web server can deliver.

For framework projects, ask the AI tool to create a production build or a static export. A production build is the final set of files for the live site. Upload the dist, build or out folder, not the source folder with configuration and development files.

Some sites need logins, payments, a private database, server-side AI requests or custom backend logic. These sites need an application platform (a host that runs server code). Direct upload suits finished static output.

No-Git Website Hosting: Upload-Based Publishing vs. Git Platforms

Vercel, Netlify and similar platforms usually connect a Git repository to a build pipeline (an automated process that builds and publishes the site). Developers commit and push changes, and the platform builds and deploys them. That gives you version history, automated tests, reviews and reproducible releases.

Upload-based publishing starts with finished output, and you publish it directly. You do not create a repository or a pipeline. (If you prefer Netlify or Vercel, they also accept uploads without Git, through Netlify Drop and the Vercel CLI.)

Consideration Upload-Based Publishing Git Deployment Platform
Starting point Finished website folder Source repository
Typical update Upload the revised folder as a new deployment Commit and push code
Technical setup Low Moderate
Build automation Usually on your computer, or not necessary Built in
Version history The list of deployments on the host Git history and pull requests
Best fit Demos, reports, proposals, client previews Maintained apps and production sites
Client access controls Depends on the host and plan Depends on the host and plan

Choose the workflow that matches the lifespan of the work. A two-week client review needs less setup than a product that six engineers maintain.

Git can still be useful when it does not control deployment. For example, a developer can keep local history while a project manager publishes the finished folder. No-Git hosting removes Git as a requirement for sharing. It does not replace version control (a history of each change to the files).

Prepare Files for No-Git Website Hosting

Do not upload the first folder that an AI agent gives you. Generated projects can include placeholder text, absolute file paths, source maps or development-only files. Source maps are files that connect built code back to its source. A five-minute review prevents most publishing failures.

Item What to Do Why It Is Important
Entry page Make sure that index.html is at the top level of the folder Hosts need a root page
File paths Prefer relative paths such as assets/logo.webp Paths from your local computer fail online
Build output For framework projects, use the compiled output folder Browsers cannot always run source files
Private data Remove tokens, credentials, private notes and customer data Visitors can read every downloaded file
File names Match capitalization exactly Many servers treat Logo.png and logo.png as different files
Forms Decide where submissions go Static HTML cannot process a form by itself
Licenses Make sure that you have the rights to generated images, fonts and copied text A public site shows asset problems to everyone

Open the site locally and click every major link. Look in the browser console for missing files and JavaScript errors. Client-side routing is JavaScript that changes pages in the browser. If the site uses it, find out how your host handles unknown paths. Without the right setting, /pricing can work from the menu but return a 404 when a visitor opens it directly.

Search the folder for API_KEY, SECRET, TOKEN and password. The OWASP testing guide warns that JavaScript bundles and source maps can expose API keys, internal routes and credentials. Assume that visitors can read every file that a browser can load. If a real key was ever in the folder, revoke it and create a new one.

Upload the Folder to Cloudflare Pages

Cloudflare Pages can create a project from a folder that you drag into the dashboard. You need a Cloudflare account, but you do not need a repository.

  1. In the Cloudflare dashboard, go to Workers & Pages.
  2. To start a Direct Upload project, select Create application > Get started > Drag and drop your files.
  3. Name the project. The name becomes part of the default address, <project>.pages.dev. If you do not want the client’s name in the URL, pick a neutral name.
  4. Drag in the finished folder. Use the folder that has index.html at its top level. Keep its directory structure, because CSS, JavaScript, images and data files depend on relative paths.
  5. Select Deploy site. Wait for the upload to finish.
  6. Open the pages.dev address in a private browser window. Click through every page as a visitor.

Drag and drop accepts up to 1,000 files, and each file can be up to 25 MiB. For a larger folder, use Wrangler, the Cloudflare command-line tool. Wrangler accepts up to 20,000 files. Log in once:

npx wrangler login

Then create the project:

npx wrangler pages project create

Deploy the output folder (in this example, dist):

npx wrangler pages deploy dist

Before you start, decide whether the site will need Git later. Cloudflare’s documentation states that you cannot switch a Direct Upload project to Git deployment later. This limit is not a problem for a client preview. If the site becomes a long-lived project in a repository, create a separate Git-connected project at that time.

Two hosting details are important for AI-generated sites.

The first detail is single-page apps (sites where JavaScript draws every page from one file). If the folder has no top-level 404.html, Pages assumes a single-page application. It then serves the home page for any path that does not match a file. If your site has real pages and a custom not-found page, include 404.html.

The second detail is custom domains. To add one, open Custom domains > Set up a domain in the project. A subdomain such as review.example.com can stay at your current DNS provider with a CNAME record. An apex domain (a domain with no subdomain part) such as example.com is different. You must add it to Cloudflare as a zone (custom domain docs).

Public hosting is often wrong for unfinished client work. Draft proposals can contain pricing, and prototypes can show product ideas. Investor updates can include numbers that must stay out of search results. A hard-to-guess URL is not access control. People forward links, log them and paste them into other tools.

Cloudflare Access adds a sign-in step that runs before the site serves any file. With the one-time PIN login method, a reviewer types an email address, receives a code and pastes it in. There is no shared password and no account to create. The PIN expires 10 minutes after the reviewer requests it. Access only sends codes to addresses that your policy allows.

The Pages setting Enable access policy protects only preview deployments (test copies with their own addresses). To cover the main pages.dev address, follow the steps from Cloudflare’s known issues page:

  1. In the Pages project, open Settings. Select Enable access policy.
  2. Select Manage on the new policy. Under Access > Applications, select the project. Then select Configure.
  3. Under Public hostname, delete the * from the Subdomain field. Save the change. The application now covers <project>.pages.dev. If the dashboard reports a conflict, change the Application name.
  4. Go back to the Pages project and open Settings > General. Select Enable access policy again, so that previews also stay protected.
  5. Edit the Include rule of the policy. For named reviewers, use Emails. For everyone at the client’s domain, use Emails ending in (policy selectors).
  6. Turn on the PIN method: Zero Trust > Integrations > Identity providers > Add new identity provider > One-time PIN.
  7. If you added a custom domain, create a separate application for it. Go to Zero Trust > Access controls > Applications > Create new application > Self-hosted and private. Then select Add public hostname and enter your domain. Without this application, the sign-in page shows on the custom domain but does not let anyone in.

Our Cloudflare Pages password protection guide shows the same setup in more detail.

Match the policy to the job:

Example Suggested Access Rule
A freelancer who shares a homepage concept Emails with the client’s two addresses
An agency that sends a proposal and an interactive demo Emails ending in the client’s company domain
A consultant who delivers a dashboard and a PDF report Emails for named contacts. When someone leaves the project, remove their address
An AI agent that makes a recurring status report Private review first, public only after approval

A static page cannot store form submissions on its own. To get feedback from reviewers, embed a hosted form such as Google Forms or Tally. Or ask reviewers to reply to your email. Request only the information that you need, and tell reviewers how you will use it.

An access policy suits proposals, prototypes and routine review material. It does not replace contractual, regulatory or enterprise security controls. Before you publish sensitive material, make sure that this setup meets the requirements of the client.

If you already use Netlify or Vercel, both have password options, but with plan limits. Netlify password protection needs a Pro or Enterprise plan (Netlify guide). Vercel Password Protection is not available on the Hobby plan (Vercel guide).

The first upload is easy. The revisions show whether a workflow is good. If you email final-v3-revised-really-final.zip, you create confusion. A new URL after every change also creates confusion.

With Pages, each upload becomes a new deployment (a published version) of the same project. The project address stays the same:

  1. Make the requested changes in the AI tool or a local editor.
  2. For a framework project, generate a fresh static build.
  3. Make sure that the links and the mobile layout of the revised folder work locally.
  4. In the Pages project, select Create a new deployment and choose production. Drag in the new folder. Or run npx wrangler pages deploy dist again.
  5. Open the existing client URL in a private browser window. Make sure that the release works.

The client keeps one bookmark while the work changes. This helps when a proposal goes to procurement, or when someone opens a board deck again before a meeting. It also helps when a prototype goes from one reviewer to another.

If a release goes wrong, open Deployments. In All deployments, find the last good production deployment. Open its three-dot menu. Select Rollback to this deployment. Production switches back immediately after you confirm (rollback docs). You cannot roll back to a preview deployment.

With a stable link, creation and publishing are separate tasks. A designer can upload through the dashboard. Later, a developer can script the Wrangler command, or let an AI agent run it. Automate the process only after the manual process works. Do not give an agent publishing access too early. First, a person must review its output, remove private files and test a manual release.

For larger revisions, keep a dated local copy, or use version control on your computer. No-Git hosting makes delivery simpler, but keep your recovery plan.

Other Ways to Host Without Vercel or Netlify

Cloudflare Pages is one option, not the only one. The right method depends on whether you need a client review link, a public marketing site or complete server control.

Approach Setup Effort Good Fit Main Tradeoff
Cloudflare Pages Direct Upload Low Static demos, reports, proposals and client previews The project cannot switch to Git later. Access is a separate setup
GitHub Pages with browser upload Low to moderate Public sites for people who already use GitHub Needs a repository, but you can upload files in the browser (up to 100 files at a time). The site is public
Object storage with a CDN Moderate Public static sites with predictable files You must configure access rules, headers, domains and cache invalidation
Traditional web hosting with file upload or SFTP Moderate Small public sites and existing business hosting Updates, access control and rollback vary by provider
VPS with Caddy or Nginx High Custom domains, server control and unusual requirements You are responsible for security updates, logs, backups and configuration
Git deployment platform Moderate Maintained frontend projects and automated releases The repository and build workflow become part of publishing

Object storage (a cloud service that stores files) can be cheap and reliable. But it is less convenient when a consultant only wants to upload a folder and share a protected link. A VPS (a virtual server that you rent) gives maximum control. Its owner is also responsible for TLS, firewall rules, software updates and recovery. Our Caddy guide covers that route.

Choose the method that fits the next job of the website. For client review, use upload-based publishing with access control. For long-lived marketing sites, use a conventional public host. For projects that need server code, authentication, payments or a database, use an application platform. Do not try to make a static host behave like an application server.

Static Website Hosting Failures

Most hosting failures with AI-generated websites are ordinary static-file problems. Usually an asset is missing, someone uploaded the wrong folder, or a feature depends on a development server.

Symptom Likely Cause Practical Fix
Blank page JavaScript error or wrong build folder Look in the browser console, then upload the production output
Missing styles or images Broken path or capitalization mismatch Use relative paths and match file names exactly
Direct links return 404 No single-page app fallback On Pages, leave out a top-level 404.html. On Netlify, add a rewrite rule. Or generate real HTML pages for each route
Every unknown path shows the home page Pages treats the site as a single-page app Add a 404.html at the top level
Form does nothing No submission service or backend Embed a hosted form or use the form feature of your host
AI request fails online Someone removed the secret key, or the API blocks browser calls Move the request to a secure backend
Client sees an old version Browser cache, or the upload went to a preview instead of production Look at the deployment list, then reload in a private window

Performance is still important on a static site. Google’s Core Web Vitals guidance defines three targets for a good result:

  • Largest Contentful Paint (the time until the main content shows): 2.5 seconds or less.
  • Interaction to Next Paint (the delay after a click or a key press): 200 milliseconds or less.
  • Cumulative Layout Shift (how much the layout moves while it loads): 0.1 or less.

These targets apply at the 75th percentile. This means that at least three out of four visits must meet them.

Before you share the site, compress large images and remove unused video. Also set image dimensions, so that the layout does not shift while the page loads.

Final Thoughts

You do not need Vercel, Netlify or Git for every AI-generated website. For a finished static folder, an upload creates a live link with much less setup.

Match the method to the job:

  • Use Cloudflare Pages Direct Upload with an Access policy for a stable, protected client review link.
  • Use public static hosting for long-lived informational sites.
  • Use developer infrastructure for projects that need backend code or an automated engineering workflow.

Before you publish, inspect the files and remove secrets. Test the live result, and keep a copy that you can recover. The best setup lets your audience open the work safely and gives you a clear path for the next update.

Free email addresses
for your AI agents

Each agent gets an address like myagent.x7k2@revdokumail.com. It can receive emails, send replies and store files.

  • 3 free mailboxes, each with its own address
  • 3,000 incoming and 500 sent emails a month
  • 3 GB of storage for attachments and files
  • Virus, malware, spam and prompt-injection filter
  • Read and reply through API, MCP or CLI
Create free mailbox

You do not need a card.

Frequently Asked Questions

Do I need my own domain?

No. Every Cloudflare Pages project gets a <project>.pages.dev address that you can share immediately. If you later need a custom domain for branding or long-term public use, add it then.

How do I keep a public review site out of search results?

Search crawlers cannot read a site behind Cloudflare Access. For a public site, add a _headers file to the top level of the folder. In this file, send X-Robots-Tag: noindex for the pages that you want to keep out of search. Then deploy again.

When should I move from upload-based hosting to a Git workflow?

Move when the site becomes a long-lived product with several contributors. Also move when it needs automated builds, tests and reviews. You cannot switch a Direct Upload project on Pages to Git. Create a new Git-connected project and point your domain at it.

Share:
Markdown version

Related Articles

↧
Loading PDF…