# whsiq.com landing page

Static site for `whsiq.com`. Pure HTML + CSS, no build step, no JS.

## Files

- `index.html` — landing page
- `privacy.html` — rendered from `docs/privacy.md`; regenerate with
  the one-liner below whenever the source markdown changes
- `styles.css` — styles for both pages
- `favicon.svg` — brand mark

## Regenerating `privacy.html`

```bash
python -c "
import markdown
with open('docs/privacy.md', encoding='utf-8') as f: md = f.read()
md = md.replace('WHSIQ', 'SafetyIQ').replace('whsiq.au', 'whsiq.com').replace('WorkstreamIQ', 'SafetyIQ')
html = markdown.markdown(md, extensions=['tables', 'fenced_code'])
import pathlib
tpl = pathlib.Path('site/privacy.html').read_text(encoding='utf-8')
# find the prose block and replace
import re
new = re.sub(r'(<main class=\"prose\">)(.*?)(</main>)', r'\1\n' + html + r'\n\3', tpl, flags=re.S)
pathlib.Path('site/privacy.html').write_text(new, encoding='utf-8')
"
```

## Deployment — Cloudflare Pages (recommended)

The rest of the infra is already on Cloudflare (tunnels, DNS, TLS),
so keep the landing page there too.

1. Cloudflare dashboard → Pages → Create a project → **Direct upload**.
2. Name: `whsiq-landing`. Drag the contents of this `site/` directory.
3. Pages serves the build at `whsiq-landing.pages.dev`; add a custom
   domain of `whsiq.com` (and `www.whsiq.com`) in the Pages → Custom
   domains tab. CF handles the DNS + TLS.
4. Point `customers.whsiq.com` at the tunnel zone (see
   `docs/customer-tunnel-setup.md`) so the two subdomains don't
   collide.

Deploy updates by re-uploading the folder, or connect the repo to
Pages and every push to `main` publishes automatically (pick the
`site/` subdirectory as the build output).

## Alternative: any static host

The site is plain HTML — GitHub Pages, Netlify, S3+CloudFront, Caddy,
nginx, all work. Just serve the folder. Only requirements:

- Gzip / Brotli enabled (shaves ~70% off the HTML).
- HTTPS mandatory (TestFlight + Play won't accept an HTTP privacy URL).
- Cache headers: `text/html` ~5min, CSS/SVG ~1y with immutable.
