Skip to content

All Things Handy Utah

A marketing website for Wayne Lewis’s handyman business. People find it on Google, read about what Wayne does, and fill out a form to request a quote. When they submit the form, the information goes straight into Wayne’s customer list (GoHighLevel) so he can follow up without anyone typing it in by hand. It is a lead magnet — the site exists to turn visitors into quote requests.

Wayne Lewis (client). James built it and maintains it. Wayne owns the business, the domain, and the final say on any changes.

https://allthingshandyutah.com

ThingDetail
FrameworkAstro 5.17.1
StylingTailwind CSS 4
HostingCloudflare Pages (project name: allthingshandy)
Form backendCloudflare Function at /api/submit-form.js → posts to GoHighLevel
CRMGoHighLevel (location ID uk9U9biiP4cqpGYpbFFR)
Total pages29 (services + locations + landing pages)
  • Repo: ~/apps/allthingshandy/ (note: repo name is allthingshandy, live domain is allthingshandyutah.com)
  • Dev server: cd ~/apps/allthingshandy && npx astro dev --port 4321
  • Build number: 25 (as of last Explore pass)
  • Latest commit: 2026-04-14
  1. cd ~/apps/allthingshandy
  2. Edit Astro pages in src/pages/ or components in src/components/
  3. npx astro dev --port 4321 to preview locally at localhost:4321
  4. Show Wayne the proposed change before pushing.
  5. Bump build.txt
  6. Commit with message format Build X: summary
  7. git push — Cloudflare Pages auto-deploys
  • welcome.jpg is low resolution (550×367). Looks blurry at larger sizes. Should be replaced with a 1600-wide version when Wayne provides one.
  • “Meet Wayne” video placeholder. The hero video section uses a placeholder YouTube ID. Needs a real video from Wayne.
  • Google Places Autocomplete is deprecated. It still works, but Google is pushing users to a newer API. Migration is not urgent but should be tracked.
  • WordPress export XML lives in the root of the repo. Left over from the migration — not actively used but kept for reference. Do not delete without confirming.
  • GHL Private Integration Token — stored in Cloudflare Pages environment variables, not in the repo.
  • GHL Location IDuk9U9biiP4cqpGYpbFFR (this is a public identifier, not a secret).
  • Any other credentials — live in shared-secrets.env on Google Drive, not here.