CJ ACKLEY - INDEPENDENT WEBSITE

This folder contains the complete website and all 21 project downloads.
The dist folder is ready to upload. It needs no build step, ChatGPT account,
GitHub connection, database, or paid software to serve the portfolio.

1. CREATE YOUR HOSTING ACCOUNT

Create or sign in to your Cloudflare account: https://dash.cloudflare.com/
Use an account you own so you control the website and its domain.
The site fits Cloudflare Pages' current free-plan file limits.

2. INSTALL NODE.JS

Install the LTS version from https://nodejs.org/en/download
Close and reopen your terminal after installation.

3. EXTRACT THIS ZIP AND OPEN A TERMINAL

On Windows, right-click the ZIP and choose Extract All.
Open the extracted CJ-Ackley-Website folder. It contains dist and this file.
Click File Explorer's address bar, type cmd, and press Enter.

4. LOG IN AND PUBLISH

Run these commands one at a time:

npx wrangler@4 login
npx wrangler@4 pages project create cj-ackley-portfolio --production-branch=main
npx wrangler@4 pages deploy dist --project-name=cj-ackley-portfolio --branch=main

If npm asks to install Wrangler, accept. The login command opens Cloudflare
in your browser. Sign in and authorize its official command-line tool.

If the project name is unavailable, choose another name and use that same
name in the create and deploy commands. After upload, Cloudflare prints
your live address. Use the production address shown in the project's
dashboard when sharing your portfolio, rather than a single-deploy preview.

Use the command-line uploader for this complete bundle. Cloudflare's browser
drag-and-drop uploader is limited to 1,000 files; this site has more than that.

5. ADD YOUR OWN DOMAIN

The pages.dev address works immediately. A domain purchase is optional.
To use a domain you own, open your Cloudflare Pages project, select Custom
domains, then Set up a domain. Follow its DNS instructions for that domain.
For a bare domain, Cloudflare requires the domain's nameservers to be on
Cloudflare. A subdomain such as www can use an external DNS provider.
Preserve existing email/DNS records if moving your domain's nameservers.

6. UPDATE SEARCH AND SHARING METADATA

The package deliberately contains no canonical URLs pointing back to the old
host. Once the production address is settled, install Python 3.12 or newer
if it is not installed, then run this in the same folder:

py -X utf8 scripts/set_site_url.py https://YOUR-ACTUAL-DOMAIN

Replace https://YOUR-ACTUAL-DOMAIN with your real HTTPS address. On macOS or
Linux, use python3 instead of py. This writes the sitemap, canonical URLs,
and social-sharing image address. It does not change DNS or publish anything.

Run the deploy command from step 4 again to upload those updates. The site
works before this metadata step; the step finishes the search/sharing setup.

7. UPDATE THE WEBSITE LATER

Keep this entire folder as your editable copy. Uploading a changed dist
folder to the same Cloudflare project replaces the published site.
Do not create a new project for each update.
README.md explains the source files and rebuilding commands.
The website footer includes a portable source download as well.

WHAT THE WEBSITE HOSTS

Pages, reports, interactive CAD views, stored-result charts, project archives,
and individual source/CAD/data files are all included. The downloadable
software projects have their own runtime instructions. Their server processes
do not become hosted applications merely by uploading this static portfolio.
The EMR project is not part of this export.

OFFICIAL INSTRUCTIONS

https://developers.cloudflare.com/pages/get-started/direct-upload/
https://developers.cloudflare.com/pages/configuration/custom-domains/
https://developers.cloudflare.com/pages/platform/limits/

This package has been prepared and checked locally. It is not a completed
Cloudflare deployment; the account login and upload steps above are required.
