[object Object]

← back to Wallpapercontractor

Add deploy runbook (Afternic delist + Kamatera deploy steps); full contractor directory smoke-tested, compliance-clean

027fb12a87e842568b2e809e2c0bcfc6bd7e0475 · 2026-05-31 16:59:55 -0700 · steve

Files touched

Diff

commit 027fb12a87e842568b2e809e2c0bcfc6bd7e0475
Author: steve <steve@designerwallcoverings.com>
Date:   Sun May 31 16:59:55 2026 -0700

    Add deploy runbook (Afternic delist + Kamatera deploy steps); full contractor directory smoke-tested, compliance-clean
---
 DEPLOY.md | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/DEPLOY.md b/DEPLOY.md
new file mode 100644
index 0000000..0c433ce
--- /dev/null
+++ b/DEPLOY.md
@@ -0,0 +1,41 @@
+# wallpapercontractor.com — deploy runbook
+
+**Status (2026-05-31):** Full build **complete + smoke-tested locally** — Express + EJS
+contractor/installer directory (home, `/contractor/:id` profiles, `/find-installer`
+lead form + `POST /api/lead`, `/about`, `/privacy`). All routes 200. **Compliance:
+clean** — it lists installers (companies/people), not vendor brands, so no
+vendor-name leak (the lone `romo` denylist hit was a "p**romo**tional" substring
+false-positive). Steve chose to ship the FULL build (overriding the DTD "thin" verdict).
+
+> Note: this overlaps nationalpaperhangers.com (also an installer directory). Per the
+> DTD verdict that's a duplicate-directory / split-SEO tradeoff Steve accepted. Consider
+> a `rel=canonical` strategy or distinct positioning (commercial/bonded-crew angle —
+> the current tagline) to avoid the two competing for the same queries.
+
+## Registrar / DNS facts
+- Registrar **GoDaddy** · expires 2028-11-08 · **locked + privacy ON**
+- Nameservers: `ns5.afternic.com` / `ns6.afternic.com` (Afternic parking)
+- Target host: Kamatera `45.61.58.125`, app port **9930**
+
+## STEP 1 — Take it off Afternic  *(Steve — account action, cannot be automated)*
+GoDaddy → the domain → *List for Sale / Afternic* → remove listing (or Afternic
+dashboard → My Domains → wallpapercontractor.com → delist).
+
+## STEP 2 — Repoint DNS  *(Steve — registrar action / DNS is classifier-gated)*
+GoDaddy → unlock → set nameservers to **GoDaddy default** → add **A `@` → 45.61.58.125**
+(+ `www` CNAME → `@`) → re-lock. Verify `dig +short wallpapercontractor.com` = `45.61.58.125`.
+
+## STEP 3 — Deploy to Kamatera  *(Claude can run once DNS resolves to 45.61.58.125)*
+```sh
+rsync -az --exclude node_modules --exclude .git \
+  ~/Projects/wallpapercontractor/ my-server:/root/Projects/wallpapercontractor/
+ssh my-server 'cd /root/Projects/wallpapercontractor && npm install --omit=dev'
+ssh my-server 'cd /root/Projects/wallpapercontractor && pm2 start server.js --name wallpapercontractor && pm2 save'
+# nginx vhost → 127.0.0.1:9930 (server_name wallpapercontractor.com www.…)
+# certbot --nginx -d wallpapercontractor.com -d www.wallpapercontractor.com
+```
+
+## Lead handling
+`POST /api/lead` — confirm where leads are routed (email/DB/CRM) before launch so the
+`/find-installer` form doesn't drop submissions. Wire to the same destination as the
+nationalpaperhangers booking funnel if appropriate.

← 1ac7cc2 Add per-site favicon (kills /favicon.ico 404)  ·  back to Wallpapercontractor  ·  Wire /api/lead into nationalpaperhangers funnel: redirect to 05d07ef →