Skip to content
Riley Sklar
Back to case studies

Charity Marketing Site + Ticketing

Charity Concert with Stripe

A homepage and self-service ticketing site for an outdoor charity benefit concert — a custom Stripe integration with server-side price integrity, Turnstile bot protection, and a signature-verified webhook, built with Astro, React, and Netlify Functions.

Astro + React islands Tailwind CSS v4 Custom Stripe integration Netlify Functions + Blobs Cloudflare Turnstile
The Concert On Lake Grapevine — homepage and Stripe ticket checkout for an outdoor benefit concert, built with Astro and Netlify

What I learned

The hardest part of a public ticketing flow isn’t the happy path — it’s refusing to trust the browser. The client only ever sends a clamped quantity and a Turnstile token; the actual charge amount is set server-side from a Stripe price ID, and success is never shown until a serverless function re-verifies the session’s payment_status with Stripe. Treating Stripe as the system of record — rather than anything the front end reports — kept the money logic honest and the attack surface small.

Astro rewarded a content-first discipline too. Centralizing every piece of copy, lineup detail, and legal clause in a single site.ts meant the homepage, per-band pages, tickets, and legal pages all rendered from one source of truth — and shipping near-zero JavaScript, with the checkout widget as the only React island, kept the outdoor-festival landing page fast on a phone in the sun.

What I did

  • Built the marketing homepage with an animated aurora/sunset hero, grain overlay, sponsor marquee, and a content-driven lineup (index + per-band pages) — all generated statically from a single site.ts.
  • Built a custom Stripe integration — not a drop-in button, but three purpose-built Netlify serverless functions (create-checkout-session, verify-session, stripe-webhook) with server-side price integrity so the amount can’t be tampered with client-side.
  • Added Cloudflare Turnstile bot protection on the checkout endpoint and a signature-verified Stripe webhook that records paid orders to Netlify Blobs for a will-call list, with CSV export.
  • Hardened the security posture with a hashed-inline-script CSP generated by Astro, plus HSTS, X-Frame-Options: DENY, nosniff, Referrer-Policy, Permissions-Policy, and COOP headers.
  • Handled SEO and static-gen niceties — dynamic sitemap.xml, robots.txt, an Seo component, and a non-indexed, password-protected staging deploy gated on PUBLIC_STAGING.
  • Tested end-to-end with Playwright, including accessibility assertions via axe-core.

What I shipped

A live homepage and ticketing site for The Concert On Lake Grapevine — a family-friendly outdoor benefit concert at Mariner Point Park on Sunday, October 11, 2026, presented by The Charity Grapevine and Tolbert’s Restaurant & Chili Parlor, with net proceeds benefiting local Grapevine charities. Attendees buy $27.50 general-admission tickets through a hardened, custom-built Stripe checkout flow, and organizers get a verified will-call list on the back end.

Get in touch

Building something AI-first?

I'm open to chat about the intersection of AI and web growth — GEO/AIO strategy, MCP and agentic architecture, marketing-engineering ops. Otherwise, just say hi.