← back to Greenland Onboard
Add refresh-viewer.sh, README internal-tool docs, .deploy.conf rename to greenland-internal; deploy/DNS memo drafted to pending-approval
b9d45296e8b9004620830d4ebba19ea9fed0a838 · 2026-07-13 00:09:51 -0700 · Steve Abrams
Files touched
M .deploy.confM README.mdA scripts/refresh-viewer.sh
Diff
commit b9d45296e8b9004620830d4ebba19ea9fed0a838
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jul 13 00:09:51 2026 -0700
Add refresh-viewer.sh, README internal-tool docs, .deploy.conf rename to greenland-internal; deploy/DNS memo drafted to pending-approval
---
.deploy.conf | 7 +++++--
README.md | 20 ++++++++++++++++++++
scripts/refresh-viewer.sh | 7 +++++++
3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/.deploy.conf b/.deploy.conf
index c3f6892..fded566 100644
--- a/.deploy.conf
+++ b/.deploy.conf
@@ -1,3 +1,6 @@
-PROJECT_NAME=greenland-landing
+# greenland-onboard deploy config (GATED — do not run without Steve's approval)
+# Internal employee cork-line tool → greenland.internal.designerwallcoverings.com
+PROJECT_NAME=greenland-internal
DEPLOY_PATH=/root/Projects/greenland-onboard
-HEALTH_URL=http://127.0.0.1:9973/
+HEALTH_URL=http://127.0.0.1:9973/healthz
+PORT=9973
diff --git a/README.md b/README.md
index d621eb0..832119f 100644
--- a/README.md
+++ b/README.md
@@ -12,3 +12,23 @@ Cork line = Wallcovering(1) > Crafted(14) > Handmade(33) > **Cork(40)** = 100 SK
GOTCHA: `name`/`code` fields are inconsistently swapped (SKU vs color name) per-record — normalized by regex.
Staging table: `greenland_catalog` in dw_unified. Shopify push is GATED.
+
+## Internal employee tool (this repo's server)
+`greenland.internal.designerwallcoverings.com` — an INTERNAL, basic-auth (`admin / DW2024!`)
+cork-line lookup tool. Employees look up a `Cork-<n>` SKU and see specs + stock + pricing
+(retail / net-cost / discount / margin) without leaving the page. Private-label brand is
+**Phillipe Romano**; "Greenland" appears only here (auth-gated internal), never customer-facing.
+
+- Run: `node server.js` → http://127.0.0.1:9973 (zero-dependency, built-in http).
+- Data: `public/viewer.json` = merge of `greenland_catalog` + `data/enriched-cork.json`
+ (hex/hue/city/tags) + `shopify_products` mirror (handle/id/status). Regenerate:
+ `bash scripts/refresh-viewer.sh` (or `node scripts/build-viewer-snapshot.mjs`) — $0 local;
+ server hot-reloads within 5s.
+- Endpoints: `/healthz` (unauthed) · `/api/products` · `/api/product/:sku` ·
+ `/api/stock/:sku` (live $0 open-API re-check of published/availability, no metered scrape).
+- Images ALWAYS local (`public/img/*.jpg`), never hotlinked.
+- Pricing reality: retail **$59.50/yd** (6-yd increments) is canonical; **net cost + trade
+ discount are unconfirmed** (Greenland wholesale not supplied; vendor_registry discount unset)
+ → shown honestly as "unconfirmed", margin computes automatically once a cost lands. These
+ internal-only figures must NEVER appear on a customer-facing surface.
+- Deploy/DNS is GATED → see `~/.claude/yolo-queue/pending-approval/greenland-internal-viewer-deploy.md`.
diff --git a/scripts/refresh-viewer.sh b/scripts/refresh-viewer.sh
new file mode 100755
index 0000000..06daf64
--- /dev/null
+++ b/scripts/refresh-viewer.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+# refresh-viewer.sh — rebuild the internal cork tool's data snapshot from dw_unified ($0 local).
+# The server hot-reloads public/viewer.json within 5s (fs.watchFile) — no restart needed.
+set -euo pipefail
+cd "$(dirname "$0")/.."
+node scripts/build-viewer-snapshot.mjs
+echo "[refresh] snapshot rebuilt — server will hot-reload within 5s"
← 0f19e5d Internal cork tool: basic-auth Express-style http server (/h
·
back to Greenland Onboard
·
auto-save: 2026-07-13T01:52:00 (1 files) — scripts/rerule-ma 3fd488b →