Environment Variables
This is a static site, so most variables are optional. See .env.example for the
full list.
Local Development
Section titled “Local Development”Copy .env.example to .env for build-time variables:
# Public production URL (canonical/OG/sitemap)SITE_URL=http://localhost:4321
# Optional analyticsPUBLIC_GA_MEASUREMENT_ID=PUBLIC_GTM_ID=Pages Functions secrets (R2 cleanup; optional legacy Instagram API) go in
.dev.vars when using wrangler pages dev:
CLEANUP_SECRET=dev-cleanup-secret-change-meInstagram strip
Section titled “Instagram strip”Set PUBLIC_INSTAGRAM_FEED_URL to the JSON feed endpoint (default
http://localhost:8787/). Also configure siteConfig.instagram.profileUrl /
title / limit.
Radio schedule
Section titled “Radio schedule”Set PUBLIC_SCHEDULE_URL to the /programacion JSON endpoint (default
http://localhost:8788/programacion). Override per environment in Cloudflare
Pages. src/content/schedule/*.json remains the offline fallback.
Optional / unused by the strip: INSTAGRAM_RAPIDAPI_KEY, INSTAGRAM_USERNAME,
INSTAGRAM_ACCESS_TOKEN, INSTAGRAM_USER_ID, INSTAGRAM_LIMIT, plus KV binding
INSTAGRAM_FEED in wrangler.jsonc for functions/api/instagram.ts.
Production
Section titled “Production”Configure variables via Cloudflare Dashboard > Pages > your-project >
Settings > Environment variables. Add CLEANUP_SECRET as an encrypted secret
if you use the R2 cleanup worker.
Secrets Validation
Section titled “Secrets Validation”The validate:secrets script scans the repo for accidentally committed secrets:
pnpm run validate:secretsIt runs during CI and fails the build if a likely secret is detected.