WordPress-Ablösung für einen Fernmitgliedschafts-Golfclub — statisch, DSGVO-sauber, auf Vercel live.
oakwoodgolfclub.de ↗Wir haben den 16 Jahre alten WordPress-Auftritt des Oakwood Golf Club durch eine statische Next.js-Site mit Anmeldung, Verlängerung, FAQ und Blog ersetzt.
- Next.js 16 (App Router)
- Cloudflare Turnstile
- Markdown-Blog (gray-matter + marked)
- Playwright
- React 19
- SMTP (nodemailer)
- Tailwind CSS 4
- TypeScript
- Vercel
Ausgangslage
Der Oakwood Golf Club bietet eine Fernmitgliedschaft mit offiziellem Handicap und Mitgliederkarte für Golferinnen und Golfer im DACH-Raum. Der bestehende Auftritt lief 16 Jahre lang auf WordPress und sollte durch eine schnellere, wartungsarme und datenschutzkonforme Lösung ersetzt werden — inklusive der Online-Strecken für Anmeldung, Verlängerung und Karten-Versand.
Ansatz
Wir haben den Auftritt als überwiegend statische Next.js-Site neu gebaut: schnell ausgeliefert, ohne externe Tracker und mit selbst gehosteten Fonts (kein Google-Fonts-CDN zur Laufzeit, DSGVO-by-Design). Die drei Formulare — Anmeldung, Verlängerung und Kontakt — laufen über Server Actions mit Cloudflare Turnstile als cookieless Spam-Schutz; der Versand erfolgt per SMTP, eine Honeypot-Strecke fängt Bots still ab. Eine strikte Content-Security-Policy samt HSTS, X-Frame-Options und Permissions-Policy ist global gesetzt. Die 16 Jahre WordPress-Inhalte werden über generierte Legacy-Redirects sauber auf die neuen URLs überführt.
Technik & Architektur
Die Architektur im Detail — was hinter den Bausteinen oben steckt:
| Baustein | Detail |
|---|---|
| Framework | Next.js 16 (App Router), React 19, TypeScript |
| Styling | Tailwind CSS v4 |
| Hosting | Vercel |
| Blog | Markdown-getrieben (gray-matter + marked), im Repo versioniert — kein separates CMS als Laufzeit-Abhängigkeit |
| Formulare | Server Actions mit nodemailer (SMTP) für den Versand, Eingaben per Zod validiert; Cloudflare Turnstile als cookieloser Spam-Schutz |
| Sicherheit | Sicherheits-Header und Legacy-Redirects deklarativ in next.config.ts; Trailing-Slash-Normalisierung über proxy.ts, um Redirect-Hops zu sparen |
| Tests | Playwright-E2E |
| Mitgliederkarte | Gedruckter QR-Code auf /qr.html, der per Rewrite ohne Redirect-Hop auf die /qr-Route auflöst |
Laufende Pflege
Jede freigegebene Änderung geht automatisch live — ohne manuellen Veröffentlichungsschritt. Davor und danach greifen mehrere automatische Kontrollen: Der Code wird auf Sauberkeit geprüft, die wichtigsten Abläufe werden bei jeder Änderung durchgetestet, einmal täglich läuft zusätzlich ein Test direkt gegen die Live-Seite, und wöchentlich werden Ladezeit, Barrierefreiheit und Suchmaschinen-Tauglichkeit gemessen. Neue oder geänderte Blog-Beiträge werden automatisch bei den Suchmaschinen angemeldet, damit sie innerhalb von Minuten neu erfasst werden. So lassen sich Inhalte — Blog, Bilder, Seiten — ohne technischen Aufwand veröffentlichen.
Status
Live auf oakwoodgolfclub.de (DNS-Cutover IONOS → Vercel abgeschlossen). Heute online sind Startseite, eine SEO-Landingpage zur Fernmitgliedschaft, die Formulare für Anmeldung (/mitglied-werden) und Verlängerung (/mitgliedschaft-verlaengern), Kontakt, FAQ, Blog (29 Markdown-Posts) sowie die Rechtsseiten (AGB, Impressum, Datenschutz) und die QR-Splash-Seite der Mitgliederkarte. Cloudflare Turnstile ist auf allen drei Formularen aktiv. Ein Online-Payment ist noch nicht angebunden (Stripe ist laut Datenschutzseite ausdrücklich nicht live).
Ausblick
Geplant, aber noch nicht gebaut, ist ein Mitglieder-Portal mit Login, digitalen Scorecards und Handicap-Verwaltung — der nächste große Schritt, dessen Umfang noch mit dem Betreiber abgestimmt wird. Offen sind außerdem eine Online-Bezahlung und die Frage, wie die 16 Jahre an Blog-Inhalten langfristig gepflegt werden. Termine und Reihenfolge stehen noch nicht fest und werden gemeinsam mit dem Betreiber festgelegt.
Häufige Fragen
Was wurde ersetzt?+
Der 16 Jahre alte WordPress-Auftritt des Oakwood Golf Club — eines Fernmitgliedschafts-Golfclubs mit offiziellem Handicap und Mitgliederkarte — durch eine überwiegend statische Next.js-Site mit den Online-Strecken für Anmeldung, Verlängerung, FAQ und Blog.
Wie funktionieren die Formulare?+
Anmeldung, Verlängerung und Kontakt laufen über Server Actions mit Cloudflare Turnstile als cookieless Spam-Schutz; der Versand erfolgt per SMTP, eine Honeypot-Strecke fängt Bots still ab, und Zod validiert die Eingaben.
Wie wird der Blog gepflegt?+
Der Blog ist Markdown-getrieben (gray-matter + marked) und im Repo versioniert — kein separates CMS als Laufzeit-Abhängigkeit. Neue oder geänderte Posts werden bei Push automatisch per IndexNow an Bing und Yandex gemeldet, damit sie binnen Minuten neu gecrawlt werden.
Gibt es ein Mitglieder-Portal oder Online-Zahlung?+
Ein Mitglieder-Portal (Login, Scorecards, Handicap-Verwaltung) ist geplant, aber noch nicht gebaut — es braucht noch Scope-Entscheidungen mit dem Betreiber. Eine Online-Zahlung (Stripe) ist ebenfalls noch nicht angebunden.
Wie dieser Text entstand: KI-beschleunigt aus dem Projekt-Repository zusammengestellt, vom Gründer redigiert — dieselbe Arbeitsweise, mit der wir bauen.