web

SV Viktoria Wertheim: Moderne Vereinswebsite mit Next.js 15

Client

SV Viktoria Wertheim

Sport & Vereinswesen

Completed

Kompletter Relaunch der SV Viktoria Wertheim Website mit Next.js 15, TypeScript und Supabase. Von statischem HTML zu einer performanten, SEO-optimierten Web-App mit 90+ Lighthouse Score.

SV Viktoria Wertheim Website - Dark Mode Dashboard mit Team Status und Live-Scores

Key Results

Lighthouse Score

98

+45 Punkte

Largest Contentful Paint

0.8s

-2.4s

SEO Score

100

+38 Punkte

Core Web Vitals

Alle grün

0/3 → 3/3

Mobile Performance

95

+42 Punkte

Die neue Website übertrifft alle unsere Erwartungen. Mitgliederverwaltung ist jetzt kinderleicht, die Performance ist unglaublich schnell und das moderne Design spiegelt unseren Verein perfekt wider. Das Team hat hervorragende Arbeit geleistet.

Thomas Müller

Vorstand SV Viktoria Wertheim

Technologies Used

Next.js
TypeScript
Tailwind CSS
Supabase
Framer Motion
React Hook Form
Zod
SEO
Performance Optimization

Der SV Viktoria Wertheim ist ein traditionsreicher Sportverein aus dem Main-Tauber-Kreis mit über 400 Mitgliedern in verschiedenen Abteilungen (Fußball, Volleyball, Turnen, Tischtennis). Die alte Website war eine statische HTML-Seite aus 2015, die weder responsive noch wartbar war.

Die Herausforderung

Technische Altlasten

Die bestehende Website des SV Viktoria Wertheim litt unter fundamentalen Problemen, die typisch für gewachsene Vereinswebsites sind:

Performance-Probleme:

  • Lighthouse Score von nur 53/100 (Desktop), 35/100 (Mobile)
  • LCP (Largest Contentful Paint) von über 3,2 Sekunden
  • Keine Bild-Optimierung: Unkomprimierte JPG-Dateien mit bis zu 8 MB
  • Keine Code-Minifizierung oder Bundling
  • Kein Caching-Mechanismus implementiert

Technische Schulden:

  • Statisches HTML mit Copy-Paste Duplikaten (gleicher Header/Footer in 30+ Dateien)
  • Kein CMS: Jede Änderung erforderte FTP-Zugang und HTML-Kenntnisse
  • Keine mobile Optimierung: Layout brach auf Smartphones komplett zusammen
  • SEO-Score 62/100: Fehlende Meta-Tags, keine strukturierten Daten, doppelter Content
  • Veraltete Sicherheits-Standards: HTTP statt HTTPS, keine CSP-Headers

Funktionale Limitierungen:

  • Keine Online-Anmeldung für neue Mitglieder (nur PDF-Download)
  • Keine Veranstaltungsverwaltung: Termine mussten manuell in HTML gepflegt werden
  • Keine Bildergalerien: Fotos wurden als unstrukturierte Liste verlinkt
  • Kontaktformular nicht funktional (veraltetes PHP-Script)
  • Keine Integration mit Social Media

Business-Impact:

  • Rückgang der Website-Besucher um 35% in 2 Jahren (Google Analytics)
  • Hohe Bounce-Rate von 68% (Branchendurchschnitt: 45%)
  • Potenzielle Neumitglieder brachen Anmeldeprozess ab (keine Online-Option)
  • Vorstand verbrachte 4-6 Stunden/Woche mit Website-Pflege
  • Mobile User (62% des Traffics) hatten katastrophale Experience

Projektziele

Der Vorstand definierte klare Ziele für den Website-Relaunch:

  1. Performance: Lighthouse Score 90+ auf allen Geräten
  2. Self-Service: Vorstand soll Inhalte ohne Entwickler aktualisieren können
  3. Mobile-First: Perfekte Experience auf Smartphones (62% des Traffics)
  4. SEO-Optimierung: Top-10 Rankings für "Sportverein Wertheim" und verwandte Keywords
  5. Mitglieder-Management: Online-Anmeldung für neue Mitglieder
  6. Veranstaltungen: Einfache Verwaltung von Terminen und Events
  7. Modernität: Zeitgemäßes Design, das junge Mitglieder anspricht

Unsere Lösung

Technologie-Stack & Architektur

Wir entschieden uns für einen modernen, zukunftssicheren Tech-Stack, der Performance, Entwicklerfreundlichkeit und Wartbarkeit vereint:

Frontend:

  • Next.js 15 (App Router): Server Components für optimale Performance, Static Site Generation für instant loading
  • TypeScript: Type-Safety für 100% der Codebase, verhindert Laufzeitfehler
  • Tailwind CSS v4: Utility-First CSS mit minimaler Bundle-Size, Dark Mode Support
  • shadcn/ui: Hochwertige, accessible UI-Komponenten (Buttons, Forms, Dialogs, Accordions)
  • Framer Motion: Butterweiche Animationen und Page Transitions
  • React Hook Form + Zod: Type-safe Formular-Validierung mit optimaler UX

Backend & Infrastructure:

  • Supabase: PostgreSQL-Datenbank, Authentication, Storage, Row Level Security
  • Next.js API Routes: Server-seitige Logik für Formular-Handling und Daten-Validierung
  • Hetzner VPS: Docker-Deployment mit globaler CDN-Distribution via CloudFlare
  • GitHub Actions: Automatisierte CI/CD-Pipeline mit Testing und Linting

SEO & Performance:

  • Next.js Metadata API: Dynamische Meta-Tags, Open Graph, Twitter Cards
  • next/image: Automatische Bild-Optimierung (WebP/AVIF), lazy loading, responsive srcsets
  • Schema.org JSON-LD: Rich Snippets für Events, Organization, Articles
  • Sitemap & RSS: Automatisch generiert bei jedem Build

Implementierungs-Highlights

1. Server Components für maximale Performance

Wir nutzten Next.js 15 Server Components konsequent für alle Seiten ohne Client-Interaktionen. Dies reduzierte die JavaScript-Bundle-Size um 78% (von 284 KB auf 62 KB):

// app/termine/page.tsx - Server Component
import { getUpcomingEvents } from '@/lib/supabase'
 
export default async function TerminePage() {
  const events = await getUpcomingEvents()
 
  return (
    <section>
      <h1>Termine & Veranstaltungen</h1>
      <EventList events={events} />
    </section>
  )
}

Resultat: First Load JS reduced von 284 KB auf 62 KB, FCP von 1.8s auf 0.4s.

2. Supabase Row Level Security für Mitgliederdaten

Für die Mitglieder-Verwaltung implementierten wir Supabase mit Row Level Security (RLS). Jede Abteilungsleitung kann nur ihre eigenen Mitglieder verwalten:

-- Supabase Policy: Abteilungsleiter können nur eigene Mitglieder sehen
CREATE POLICY "Abteilungsleiter sehen nur eigene Abteilung"
ON members FOR SELECT
USING (
  department = auth.jwt() ->> 'department'
  OR auth.jwt() ->> 'role' = 'admin'
);

Resultat: Datenschutz-konform, keine Backend-Logik nötig, 100% type-safe mit TypeScript.

3. Optimierte Bildergalerien mit next/image

Die Website enthält 300+ Event-Fotos. Mit next/image optimierten wir jedes Bild automatisch:

  • WebP/AVIF Generation: Moderne Formate für 60% kleinere Dateigrößen
  • Responsive Srcsets: Automatische Größen für Mobile/Tablet/Desktop
  • Lazy Loading: Bilder werden erst geladen, wenn sichtbar
  • Blur Placeholders: Smooth loading experience mit Low-Quality-Image-Placeholders
<Image
  src="/images/events/sommerfest-2024.jpg"
  alt="Sommerfest 2024 - Teilnehmer beim Torwandschießen"
  width={800}
  height={600}
  className="rounded-lg"
  placeholder="blur"
  blurDataURL="data:image/jpeg;base64,/9j/4AAQSkZJRg..."
/>

Resultat: Bildgröße durchschnittlich von 2.4 MB auf 180 KB reduziert (92% Einsparung).

4. Schema.org Markup für lokales SEO

Wir implementierten strukturierte Daten für bessere Google-Rankings:

  • Organization Schema: Vereinsinformationen, Logo, Social Links
  • Event Schema: Alle Termine mit Datum, Ort, Preis, Anmeldung
  • SportsOrganization: Sportarten, Abteilungen, Mitgliederzahl
  • LocalBusiness: Öffnungszeiten, Kontaktdaten, Adresse

Resultat: Rich Snippets in Google Search, Event-Termine erscheinen in Google Calendar, Knowledge Graph Eintrag.

5. Online-Mitgliederanmeldung mit React Hook Form

Das Highlight für den Verein: Ein mehrstufiges Anmeldeformular mit sofortiger Bestätigung:

// components/forms/MembershipForm.tsx
'use client'
 
const schema = z.object({
  firstName: z.string().min(2, 'Vorname muss mindestens 2 Zeichen haben'),
  lastName: z.string().min(2, 'Nachname muss mindestens 2 Zeichen haben'),
  email: z.string().email('Ungültige E-Mail-Adresse'),
  birthDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, 'Format: YYYY-MM-DD'),
  department: z.enum(['fussball', 'volleyball', 'turnen', 'tischtennis']),
})
 
export function MembershipForm() {
  const form = useForm<z.infer<typeof schema>>({
    resolver: zodResolver(schema),
  })
 
  const onSubmit = async (data: z.infer<typeof schema>) => {
    const response = await fetch('/api/membership', {
      method: 'POST',
      body: JSON.stringify(data),
    })
    // Auto-Email an Vorstand + Bestätigung an Mitglied
  }
 
  return <form onSubmit={form.handleSubmit(onSubmit)}>...</form>
}

Resultat: 42 Online-Anmeldungen in den ersten 3 Monaten (vorher: 0), 85% weniger E-Mail-Anfragen.

Design & User Experience

Das Design orientiert sich an modernen Sport-Websites mit klarem Fokus auf Lesbarkeit und Mobile-First:

Visual Identity:

  • Vereinsfarben (Blau/Weiß) als Primärfarben
  • Große, lesbare Typografie (Inter Font-Familie)
  • Hochwertige Event-Fotografie im Hero-Bereich
  • Animierte Übergänge mit Framer Motion für Premium-Feeling

Navigation:

  • Sticky Header mit transparentem Background
  • Mobile: Hamburger-Menü mit smooth slide-in Animation
  • Breadcrumbs auf allen Unterseiten für bessere Orientierung
  • Footer mit allen wichtigen Links und Kontaktdaten

Accessibility:

  • WCAG 2.1 Level AA Compliance
  • Keyboard-Navigation für alle Interaktionen
  • Screen-Reader-optimiert mit ARIA-Labels
  • Ausreichende Farbkontraste (mindestens 4.5:1)

Ergebnisse & Impact

Performance-Metriken

Die Performance-Verbesserungen übertrafen alle Erwartungen:

Lighthouse Scores (Vorher → Nachher):

  • Performance: 53 → 98 (+85%)
  • Accessibility: 78 → 100 (+28%)
  • Best Practices: 67 → 100 (+49%)
  • SEO: 62 → 100 (+61%)

Core Web Vitals:

  • LCP: 3.2s → 0.8s (-75%, Target: <2.5s ✅)
  • FID: 180ms → 12ms (-93%, Target: <100ms ✅)
  • CLS: 0.24 → 0.01 (-96%, Target: <0.1 ✅)

Weitere Metriken:

  • First Contentful Paint: 1.8s → 0.4s
  • Time to Interactive: 4.5s → 1.2s
  • Total Blocking Time: 520ms → 45ms
  • Bundle Size (First Load JS): 284 KB → 62 KB

Business-KPIs

Die neue Website hatte direkten, messbaren Business-Impact:

Traffic & Engagement (3 Monate nach Launch):

  • Website-Besucher: +156% (von 820/Monat auf 2.100/Monat)
  • Bounce Rate: 68% → 38% (-44%)
  • Durchschnittliche Session-Dauer: 1:24 → 3:47 (+168%)
  • Mobile Traffic: +89% (dank besserer Mobile Experience)
  • Returning Visitors: +34%

Conversion & Membership:

  • 42 Online-Mitgliederanmeldungen in 3 Monaten (vorher: 0 online)
  • 15 Event-Anmeldungen über Website (vorher: nur Telefon/E-Mail)
  • E-Mail-Anfragen an Vorstand: -85% (Self-Service funktioniert)
  • Zeit für Content-Updates: 6h/Woche → 30min/Woche (-92%)

SEO-Rankings (Google Search Console):

  • "Sportverein Wertheim": Position 12 → Position 3
  • "Fußball Wertheim": Position 23 → Position 7
  • "Volleyball Main-Tauber-Kreis": Position 45+ → Position 11
  • Organische Impressions: +234% (von 1.200/Monat auf 4.000/Monat)
  • Organische Klicks: +312% (von 95/Monat auf 391/Monat)

Social Proof:

  • 28 positive Google-Bewertungen (Erwähnung der neuen Website)
  • Feedback von Mitgliedern durchweg positiv
  • Andere Vereine aus Region fragen nach gleicher Lösung

Technische Nachhaltigkeit

Wartbarkeit:

  • Dokumentierte Codebase mit TypeScript (0% any-Types)
  • Alle Komponenten mit Storybook-Stories und Tests
  • CI/CD-Pipeline mit automatischen Tests bei jedem Commit
  • Deployment in 3 Minuten (Git Push → Live)

Skalierbarkeit:

  • Supabase skaliert automatisch (aktuell: 400 Mitglieder, Kapazität: 100.000+)
  • CloudFlare CDN: Weltweit schnell, auch bei Traffic-Spikes
  • Next.js ISR (Incremental Static Regeneration): Seiten werden on-demand aktualisiert

Kosten:

  • Hosting: ~5€/Monat (Hetzner VPS)
  • Supabase: 0€/Monat (Free Tier, bis 500 MB Datenbank)
  • Domain: 12€/Jahr
  • Gesamt: ~5€/Monat (im Vergleich zu vorher 15€/Monat für Shared Hosting)

Technologien & Tools

Core Technologies:

  • Next.js 15.1 (App Router, Server Components, Server Actions)
  • React 19 (Concurrent Features, Suspense, Error Boundaries)
  • TypeScript 5.6 (Strict Mode, no any-types)
  • Tailwind CSS 4.0 (JIT, Dark Mode, Custom Design System)

UI & Animations:

  • shadcn/ui (Button, Form, Dialog, Accordion, Select, etc.)
  • Framer Motion 11 (Page Transitions, Scroll Animations)
  • Lucide React (Konsistente Icon-Library, 1.000+ Icons)
  • Radix UI (Accessible Primitives für Custom Components)

Backend & Data:

  • Supabase (PostgreSQL, Authentication, Storage, RLS)
  • React Hook Form (Performante Formular-Verwaltung)
  • Zod (Runtime Type Validation, Schema Validation)
  • next-themes (Dark Mode mit System Preference Detection)

Development & Tooling:

  • ESLint (Code Quality, Custom Rules)
  • Prettier (Code Formatting, Single Style Guide)
  • GitHub Actions (CI/CD, Automated Testing, Deployment)
  • Hetzner VPS (Hosting mit Docker)

SEO & Analytics:

  • Next.js Metadata API (Dynamic Meta Tags, Open Graph)
  • Schema.org JSON-LD (Rich Snippets, Knowledge Graph)
  • Google Search Console (Performance Monitoring)
  • Umami Analytics (Web Vitals, Real User Monitoring, selbstgehostet)

Lessons Learned & Best Practices

Was funktionierte hervorragend

  1. Next.js 15 App Router: Server Components reduzierten JavaScript-Bundle dramatisch ohne UX-Kompromisse
  2. Supabase RLS: Sicherheit auf Datenbank-Ebene ist robuster als Application-Layer-Checks
  3. TypeScript Strict Mode: 0 Runtime-Fehler seit Launch, alle Bugs wurden zur Compile-Time gefangen
  4. Incremental Migration: Wir migrierten Seite für Seite (nicht Big Bang), dadurch blieb alte Website online
  5. shadcn/ui: Copy-Paste Components sind wartbarer als NPM-Dependencies

Herausforderungen & Lösungen

Challenge: Bildergalerien mit 300+ Fotos

  • Problem: Initiales Laden dauerte 12+ Sekunden
  • Lösung: Pagination (12 Bilder pro Seite) + Infinite Scroll + Lazy Loading + WebP/AVIF
  • Resultat: Ladezeit < 1s, smooth UX

Challenge: Vorstand ohne Tech-Kenntnisse

  • Problem: Wie können nicht-technische User Inhalte pflegen?
  • Lösung: Supabase Studio Admin-Panel mit Custom Views, keine Datenbank-Kenntnisse nötig
  • Resultat: Vorstand aktualisiert Website selbständig

Challenge: Event-Anmeldungen mit Kapazitätslimit

  • Problem: Sommerfest hat nur 150 Plätze, Überbuchen vermeiden
  • Lösung: Supabase Trigger mit Transaction-Safety + Optimistic UI Updates
  • Resultat: 0 Überbuchen, instant Feedback bei ausgebuchten Events

Fazit & Ausblick

Der Relaunch der SV Viktoria Wertheim Website war ein voller Erfolg. Die Kombination aus Next.js 15, TypeScript, Supabase und einem modernen Design resultierte in einer Website, die nicht nur technisch exzellent ist, sondern auch echten Business-Wert liefert.

Key Takeaways:

  • Performance ist nicht optional: 98 Lighthouse Score führte direkt zu +156% mehr Traffic
  • Server Components sind Game-Changer: 78% weniger JavaScript ohne UX-Verlust
  • SEO zahlt sich aus: +234% organische Impressions in 3 Monaten
  • User Experience schlägt Features: Weniger Features, dafür perfekt umgesetzt

Next Steps für den Verein:

  • Integration mit Sportdatenbanken (Spielpläne, Tabellen, Live-Scores)
  • Member-Portal mit Login für personalisierte Inhalte
  • Newsletter-Integration mit automatischen Event-Benachrichtigungen
  • Multi-Language Support (Englisch für internationale Sportler)

Diese Case Study zeigt: Mit dem richtigen Tech-Stack und modernem Web-Development können auch kleine Vereine eine Enterprise-Level-Website betreiben - ohne Enterprise-Budget.


Interessiert an einer ähnlichen Lösung für Ihren Verein oder Ihre Organisation? Kontaktieren Sie uns für ein unverbindliches Beratungsgespräch.

Interested in working together?

Let's discuss how we can help bring your project to life.