# 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 serves `3031023.xyz`. - `sites/blog/` is the separate `blog.3031023.xyz` sample site. - `sites.json` is the operator-controlled manifest. It is not public intake. - `src/` contains shared Astro presentation code. - `schemas/` and `fixtures/` 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. ```bash 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//`. 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 the pilot and Markdown-test branches: `3031023-xyz-www-preview` for primary-site changes and `3031023-xyz-blog-preview` for blog changes. 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.