PSS Technology Stack — Deployment Guide
PSS-OPS-DR-002  ·  v1.0 May 2026  ·  Est. 45–60 minutes total
0 / 22 steps
All systems deployed
PSS stack is live. Open tools.peachstateservices.com on any device to verify end-to-end.
1
Cloudflare KV + Worker API
The database and API layer — everything else depends on this
~15 min
0%
Sign in to Cloudflare dashboard
Go to dash.cloudflare.com. Sign in with your Cloudflare account (the same account that manages peachstateservices.com). If you don't have one yet, create a free account — no credit card needed for the free tier.
Create the KV namespace — PSS_DRYING_DB
In the left sidebar, click Workers & PagesKVCreate a namespace.

Name it exactly: PSS_DRYING_DB

Click Add. Copy the Namespace ID — you'll need it in the next step.
Create the Worker — pss-drying-api
Go to Workers & PagesCreateCreate Worker.

Name it: pss-drying-api

Click Deploy (ignore the default Hello World code for now — you'll replace it). Then open the worker and click Edit code. Paste in the contents of pss-drying-api-worker-v2.js from the other session. Click Save and deploy.
Need the worker file? It's in the PSS Technology session — ask that Claude to send you pss-drying-api-worker-v2.js, or share it here and I'll verify it's correct before you deploy.
Bind the KV namespace to the Worker
Open the pss-drying-api worker → SettingsVariables → scroll to KV Namespace Bindings.

Click Add binding:
Variable name: PSS_DRYING_DB
KV Namespace: select PSS_DRYING_DB from the dropdown

Click Save.
Set environment variables (API secret + Zapier URLs)
Still in the worker Settings → Variables, add these Environment Variables (encrypted):
API_SECRET = [create a random password — 20+ chars] ZAP_JOB_CREATED = [Zapier Catch Hook URL — build Zap 1 first, or leave blank for now] ZAP_JOB_COMPLETE = [Zapier Catch Hook URL — Zap 2, leave blank for now] ZAP_DAILY_REPORT = [Zapier Catch Hook URL — Zap 3, leave blank for now] ZAP_COMPANYCAM = [same as ZAP_JOB_CREATED]
For now, just set API_SECRET and leave the Zapier URLs blank. The worker runs fine without them — Zapier integration can be wired up after you confirm the core stack works.
Copy your API_SECRET somewhere safe — you'll enter it into every HTML app on first run.
Add custom domain — drying-api.peachstateservices.com
In the worker → SettingsTriggersCustom DomainsAdd Custom Domain.

Enter: drying-api.peachstateservices.com

Cloudflare auto-creates the DNS record since you're already on Cloudflare. Propagation takes 1–2 minutes.
Test it: open https://drying-api.peachstateservices.com/health in a browser. You should see a JSON response with "ok": true (or a 403 if auth is required — that's also correct behavior).
2
Host HTML files on Cloudflare Pages
Makes all tools accessible from any browser, any device, anywhere
~10 min
0%
3
First-run setup on each device
Configure API connection once — all tools share the same credentials
~5 min/device
0%
4
Wire Zapier automations (3 Zaps)
Auto-creates Jobber jobs, fires invoices, logs drying data to Sheets
~15 min
0%
5
Office setup (receptionist-ready)
Dedicated office computer with intake tool + dashboard bookmarked
~5 min
0%
6
Ongoing maintenance & updates
How to push updates and what to watch
reference
0%