Handoff: sipnservesociety.com Squarespace -> Cloudflare Pages migration¶
URL: https://mkdocs.justinsforge.com/memory/handoffs/sipnserve-site-migration-2026-07-01/
Date: 2026-07-01 For: sipnserve-site worker (Fable 5) From: sipnserve-email worker (same day; email platform session)
Goal¶
Move sipnservesociety.com off Squarespace (kill the subscription) onto Cloudflare Pages, free tier, so the site survives homelab outages. Justin approved the architecture below; scope is deliberately light: the merch store "really doesn't matter" and the calendar "isn't a big deal" (Justin's words), so do not gold-plate either.
Approved architecture¶
- Hosting: Cloudflare Pages (zone already on CF, id
7a1f05c65e9bf0ea6a9daedcb060c768, account id in~/.forge-secrets/cloudflare.env; token there works, buttr -d "\"' \r"the value or the Authorization header breaks). - Site: Astro static site, content as collections (markdown/JSON), GitHub repo + auto-deploy.
- Editing while live: Pages CMS or Decap (git-based, free) for Krystal's form-style edits; everything else via plain-language commissions to Claude. Branch preview deploys before production.
- Store: minimal. Static product cards with Stripe Payment Links, or even just links out / "DM us" -- Justin explicitly deprioritized it. No commerce platform.
- Forms: newsletter signup posts to Mautic (mautic.justinsforge.com, public form paths open through tunnel); contact = mailto [email protected] (it's a Google Group reaching Justin + Krystal, see reference_forge_mail_mautic.md).
- No custom backend. CF Worker only if a form truly needs it.
Current site (recon done)¶
Squarespace, pages: / (home), /calendar ("upcoming pickup & events"), /get-involved + /partnerships (sponsor pitch: "3.6k+ members, 100+ players weekly, 16+ events monthly"), /store ("2025 MERCH DROP", ~7 items), /cart. Title: "Sip 'n' Serve Society | Volleyball Pickup & Tourneys in Austin, TX".
Design DNA (match the email platform)¶
Cobalt #0137f4, cream #ecefe6, white cards, dark text #1a1a2e, shaded card #f7f8fb, warm lowercase voice. Wordmark + assets self-hosted at https://mautic.justinsforge.com/media/images/sipnserve-logo.png (copy into the site repo, don't hotlink Mautic). Reference email theme: forge/infra/mautic/themes/sipnserve/.
Read before building¶
docs/sites-playbook.mdanddocs/asset-grabber-playbook.md(Web Builder mode specs; scraping + asset pipeline).- forge-mail Mautic reference for the email tie-ins.
- Today's daily log
memory/daily/2026-07-01.mdfor full session context.
Suggested task order¶
- Scrape Squarespace content + images (asset-grabber playbook; curl is hook-blocked on Console, run via
ssh [email protected]or Playwright). - Build Astro site (new repo or
forge/sites/sipnservesociety.com/per sites playbook, then GitHub). - Wire Cloudflare Pages (API or dashboard) + preview deploys.
- Pages CMS for events/copy editing (Krystal-friendly; she has GitHub? If not, Pages CMS with GitHub app-auth on a shared repo, or park CMS until she needs it).
- Newsletter signup embed -> Mautic Sip segment (id 1, "Sip N Serve Members").
- Store: static cards + Stripe links ONLY if trivial; otherwise stub a "merch" page linking the old flow and move on.
- Preview URL to Justin + Krystal; on approval flip DNS CNAME to the Pages deployment; then Justin cancels Squarespace.
Gotchas¶
- context-mode hook blocks curl/wget/WebFetch in Bash on Console; ssh to a fleet host for HTTP, or Playwright venv (
~/.forge-venvs/assets/). - DNS flips: snapshot existing records first (
dig+ CF API export) so cutover is reversible in one command. Do NOT touch MX records: Sip inbound email is Google-hosted (Google Group) and must keep working. - Commit conventions: branch, don't commit to main; forge repo has uncommitted
infra/mauticwork from the email session, leave it alone. - No em dashes in any authored copy (doctrine).
Status update (2026-07-01, sipnserve-site worker): BUILT + DEPLOYED, awaiting preview approval¶
Steps 1-3 and 5-7 (minus DNS) are DONE in one session:
- Preview URL (production alias, share with Krystal): https://sipnservesociety.pages.dev
- Scraped all 5 Squarespace pages (copy, FAQ, sponsor tiers, 7 products with prices, SweatPals calendar embed URL, socials). Photos came from Justin's saved set at
/mnt/workspace/Sip-N-Serve/Website/Squarespace Assets/plus 5 CDN pulls for gaps; all resized to web weight. - Astro 5 site at
forge/sites/sipnservesociety.com/(standalone repo) -> GitHubJustinWieb/sipnservesociety.com(private). Push-to-main auto-deploys via Actions + wrangler; verified green 3x. - Pages: home (hero, marquee, welcome, hosts collage, FAQ, testimonial, contact CTA),
/calendar(SweatPals embed recolored to brand),/partnerships(+/get-involvedredirect),/store(minimal static cards, order via IG DM / mailto per Justin's "products aren't a big deal"), 404. - Newsletter: Mautic form id 1 created (API enabled temporarily on CT112, then disabled; local.php restored). Footer form on every page -> segment 1 "Sip N Serve Members". Tested end-to-end; test contact deleted.
- DNS snapshot (25 records) at
forge/data/sipnservesociety-dns-snapshot-2026-07-01.json. - Full ops detail: reference_sipnserve_site.
Remaining: (1) Justin + Krystal approve preview; (2) on explicit approval: add custom domains to Pages project, repoint apex A records + www CNAME to sipnservesociety.pages.dev (MX/DKIM untouched); (3) Justin cancels Squarespace; (4) Pages CMS parked until Krystal needs form-style edits.