React Router v8 (framework mode) + React 19 + TypeScript + Tailwind CSS v4 on Vite, built with `ssr: false` + `prerender`, so every route (`/`, `/contact`, `/join`, `/support`, `/discord`) ships as real HTML with no Node server at request time.
Unknown paths return a real HTTP 404 instead of a fake 200: the build copies React Router's SPA fallback to `404.html`, which boots into a catch-all NotFound route.
GitHub Actions CI/CD: pushing to `production` runs `npm ci` → build → deploy to GitHub Pages, then auto-creates a dated release tag (`vYYYY.MM.DD.N`). `develop` is the integration branch, and manual redeploys work via `workflow_dispatch`.
Cloudflare DNS (DNS-only, no proxy) points the apex and `www` at GitHub Pages, with HTTPS enforced and `www` redirecting to the apex.
PWA basics: a web manifest, theme color, and a service worker that precaches an offline fallback page. Open Graph/Twitter tags, `sitemap.xml`, and `robots.txt` handle link previews and indexing.
Includes a Discord-webhook contact/join form component that strips `@everyone`/`@here` mentions and enforces length limits. It's currently switched off until the club sets up dedicated webhooks.