Documenting
Documenting
femfas.net v2 — Astro + React islands fronted by S3 + CloudFront. Public dockets, redacted filings, the long-form record.
femfas.net — repo → astro build → S3 → CloudFront
Static-sites stamp from serving/. Two-pass aws s3 sync with --delete; CloudFront /* invalidation; live e2e gate before declaring deploy done.
documenting/web
Source tree for femfas.net v2 — Astro 5 + React islands. Pages under web/src/pages/; copy lives in one module at web/src/copy.ts (engineer-debugging voice, ASCII outer string delimiters). PDFs at web/public/*.pdf keep their v1 filenames; new filings under web/public/assets/{filings,letters}/.
astro build
Static-site compilation. pnpm verify = lint + astro check + build; nothing reaches S3 without it green. Output is dist/ — entirely static, no SSR. Built artifacts feed the same two-pass aws s3 sync --delete as designing/web.
S3 femfas.net
Bucket femfas.net in us-east-1. CloudFront reaches it via Origin Access Control (not OAI); BlockPublicAccess on at both account and bucket. Versioning + 30-day noncurrent lifecycle from setup-bucket-hardening.sh. The wipe-and-replace deploy is reversible because of versioning.
CloudFront
Distribution E1HSASY4B6ODER. PriceClass_100 (US/EU edges only). HTTP/2 + HTTP/3, HSTS preload. Cache: *.html short (300s, must-revalidate); everything else immutable (1y). Viewer-request CloudFront Function rewrites /route → /route/index.html; 403 + 404 both map to /404.html.
Playwright e2e
Live-site smoke test. After every deploy: PW_BASE_URL=https://femfas.net pnpm -C web test:e2e flips Playwright's baseURL to the CDN and runs the same suite against it. Failures here vs. local preview surface CDN-only behaviors — trailing-slash redirects, hydration races, cache anomalies.
Metrics
- bucket
- femfas.net
- distribution
- E1HSASY4B6ODER