# Deploy the RIVET website to cPanel

The site is plain HTML, CSS, vanilla JavaScript and local SVG assets. No Node.js,
PHP, Python, database, external API, writable directory or build step is needed
on the server. Python and Playwright are optional local maintenance tools only.

## Upload the prepared archive

1. Back up any existing website files through cPanel before replacing same-named files.
2. Open cPanel File Manager and navigate to the intended domain's document root
   (normally `public_html`; an addon domain may have a different root).
3. Upload `release/rivet-website-cpanel.zip` from this workspace.
4. Extract it inside the document root. The archive contains `index.html` at its
   top level; it does not introduce an extra `public_html` subdirectory.
5. Confirm `index.html`, the other eight HTML pages, `styles.css`, `script.js`,
   `favicon.svg`, `robots.txt`, `sitemap.xml`, `assets/` and `docs/` are present.
6. Verify relative asset paths. Open the homepage, each navigation link, a device
   filter, the mobile menu and a documentation snapshot.
7. Check a narrow mobile layout, keyboard navigation and a JavaScript-disabled
   browser. If cPanel offers a directory-index setting, make sure it selects
   `index.html` for this site. Do not remove unrelated hosting files.

No hosting account was accessed and no live deployment was performed in this
milestone. The same files also work from a subdirectory and directly via file URLs.
Copy controls are shown only when a secure-context clipboard API is available;
commands always remain selectable text.

## Set the production URL before indexing

A production origin has not been supplied. The shipped `sitemap.xml` is a valid
empty URL set; canonical/og:url metadata and a robots Sitemap directive are
intentionally absent. No domain is inferred from the application's namespace.

Once a real URL is confirmed, generate a separate release locally:

```sh
python3 maintenance/package.py --origin https://YOUR-CONFIRMED-DOMAIN --output /tmp/rivet-production
```

Replace the uppercase example hostname with the actual domain before running.
For subdirectory hosting, include the path in the origin. This adds absolute
canonical URLs, og:url metadata, nine sitemap entries and the robots Sitemap
directive to the staged copy. Upload its ZIP. It does not change authoring files.
Use a fresh output directory when changing release contents.

## Repackage or preview locally

```sh
python3 maintenance/package.py
python3 -m http.server 8765 --bind 127.0.0.1 --directory release/public_html
```

Open `http://127.0.0.1:8765/`. A local server is for testing only. To upload
manually, copy the contents of `release/public_html`, not the directory itself.
Do not upload the master prompt, maintenance tools, tests, or repository metadata.
