← back to Wallpaperestimator

DEPLOY.md

53 lines

# wallpaperestimator.com — deploy runbook

**Status (2026-05-31):** Build is **complete + verified locally** (Express static host
on `:9933`, full yardage calculator, FAQ, sort+density picks grid, DW hamburger nav,
Big Red chat, GA4). Domain is **parked on Afternic** and must be taken off Afternic
before it can go live. DTD verdict: **build the full standalone tool** (it's a genuine
high-intent utility with no equivalent in the ecosystem).

## Registrar / DNS facts
- Registrar: **GoDaddy** · expires 2027-11-07 · auto-renew ON · **locked + privacy ON**
- Current nameservers: `ns5.afternic.com` / `ns6.afternic.com` (Afternic parking)
- Current A: `13.248.169.48`, `76.223.54.146` (Afternic for-sale lander)
- Target host: Kamatera `45.61.58.125`, app port `9933`

## STEP 1 — Take it off Afternic  *(Steve — account action, cannot be automated)*
1. **Remove the for-sale listing.** GoDaddy → the domain → *List for Sale / Afternic* →
   remove listing. (Or Afternic dashboard → My Domains → wallpaperestimator.com → delist.)
2. This stops the for-sale lander and frees the nameservers.

## STEP 2 — Repoint DNS  *(Steve — registrar action / DNS is classifier-gated)*
Pick one (matches the grant.agentabrams.com precedent — zone stays on GoDaddy):
- **Simplest:** GoDaddy → unlock domain → set nameservers back to **GoDaddy default** →
  add an **A record `@` → 45.61.58.125** (+ `www` CNAME → `@`). Re-lock after.
- **Or Cloudflare:** create CF zone, set CF nameservers at GoDaddy, add **proxied A
  `@` → 45.61.58.125**.

Verify: `dig +short wallpaperestimator.com` returns `45.61.58.125`.

## STEP 3 — Deploy to Kamatera  *(Claude can run this once DNS resolves to 45.61.58.125)*
```sh
# 1. ship code (node_modules rebuilt on server; data/ stays)
rsync -az --exclude node_modules --exclude .git \
  ~/Projects/wallpaperestimator/ my-server:/root/Projects/wallpaperestimator/
ssh my-server 'cd /root/Projects/wallpaperestimator && npm install --omit=dev'

# 2. pm2 (port 9933) — use a dedicated app, NOT pm2 restart all
ssh my-server 'cd /root/Projects/wallpaperestimator && pm2 start server.js --name wallpaperestimator && pm2 save'

# 3. nginx vhost → 127.0.0.1:9933  (server_name wallpaperestimator.com www.…)
#    then certbot --nginx -d wallpaperestimator.com -d www.wallpaperestimator.com
#    (http→https 301, HSTS). Reuse the onboard-domain playbook.
```

## STEP 4 — Polish (post-launch)
- `public/picks.json` currently has **6 placeholder picks** — repopulate with real DW
  products (handle/title/vendor/category/image_url) for the closing grid.
- Confirm GA4 `G-T3TWEXYWQX` is the intended property; flip Meta Pixel only via
  `set-fb-pixel.sh` if/when wanted (it's inert now).

> Standing-rule note: the calculator is a **tool**, not a product catalog — but the
> closing "wallpapers we'd suggest" grid DOES carry the required sort `<select>` +
> density slider (localStorage `wpe_sort` / `wpe_cols`), so it's compliant.