Volunteer web design for nonprofits and mission-driven organizations. Built with care, free of charge.
- Astro — static site framework
- TypeScript (strict mode)
- Vanilla CSS with custom properties
- Resend — contact email delivery
- Vercel — deployment
npm install
vercel link
npm run dev # localhost:4321
npm run build
npm run previewIf you need Vercel env vars locally, pull them on demand:
vercel env pull .env.development.local- Same-origin
Origin/Refererenforcement - Honeypot field (
project-url) and submit-timing trap (form-started-at) - Server-side validation and HTML escaping before rendering email content
- Distributed Upstash Redis rate limiting (IP and email-based, configurable with env vars)
- Optional Cloudflare Turnstile verification when
PUBLIC_TURNSTILE_SITE_KEYandTURNSTILE_SECRET_KEYare set
- Cron path:
/api/redis-keepalive - Schedule: daily at
03:17UTC (configured invercel.json) - Required env var in Vercel:
CRON_SECRET(used to authenticate cron requests)