Happy Tails Astro pilot
This repository is a static Astro pilot for 3031023.xyz. The existing
Cloudflare Pages site remains the rollback target while this branch is tested.
Repository layout
sites/www/is the primary-site content location; it serves3031023.xyz.sites/blog/is the separateblog.3031023.xyzsample site.sites.jsonis the operator-controlled manifest. It is not public intake.src/contains shared Astro presentation code.schemas/andfixtures/provide the Phase 1 JSON contract proof.
Blog posts and primary-site FAQs are now static Markdown collections with validated frontmatter and draft filtering. CMS workflows, public sign-up changes, n8n changes, and onboarding-worker changes remain out of scope.
Local checks
Use Node 22.
npm ci
SITE_KEY=www npm run build:site
SITE_KEY=www npm run verify:build
SITE_KEY=blog npm run build:site
SITE_KEY=blog npm run verify:build
Each selected site builds to dist/<site-key>/. The Worker configurations use
only static assets and a custom 404 page. They contain no custom domains,
routes, account IDs, or secrets.
Preview deployment
The Gitea workflows deploy scoped non-production Workers from every non-main
branch: 3031023-xyz-www-preview for primary-site changes and
3031023-xyz-blog-preview for blog changes. Relevant primary-site pushes to
main deploy the existing 3031023-xyz-www production Worker automatically.
Relevant blog pushes to main deploy the separate 3031023-xyz-blog
production Worker automatically. Both production workflows deploy static assets
only.
It uses the existing CF_API_TOKEN and CF_ACCOUNT_ID. The token retains the
Pages permissions needed for the main rollback target and now also permits
the non-production Worker preview deployment.
Routine jobs do not configure DNS or custom domains.
Production hostname attachment and the www redirect are manual,
operator-controlled cutover steps. See docs/pilot-baseline.md for the
rollback record.