BMW Club Moldova
24 Jahre Clubgeschichte · dreisprachig · live

BMW Club Moldova

Next.jsTypeScriptTailwindnext-intlFlickr API

Die Ausgangslage

BMW Club Moldova ist seit 2002 der offizielle BMW-Besitzerclub des Landes — Teil des europaweiten Netzwerks BMW Clubs Europe, mit über 40 aktiven Mitgliedern und zwei Jahrzehnten Rallyes, Festivals und Treffen. Die Website des Clubs war aus ihrem alten WordPress-Setup herausgewachsen: ein Archiv von fast 90 Blogartikeln, ein Mitgliedsprozess, der von Hand per E-Mail lief, und kein echter Weg zur dreisprachigen Zielgruppe, die der Club tatsächlich hat — Rumänisch, Russisch und zunehmend Englisch.

Der Ansatz

Neu gebaut auf Next.js, mit Rumänisch als Standard-Locale (ohne URL-Präfix, da das die Hauptzielgruppe ist) und Russisch/Englisch daneben. Ein paar Entscheidungen haben den Großteil der Arbeit übernommen:

~90 WordPress-Artikel migriert, ohne ihre Links zu brechen. Alte Artikel-URLs leiten auf ihre neu gebauten Äquivalente weiter, statt einen 404 zu werfen — zwei Jahrzehnte angesammelte Backlinks und Suchrankings gehen nicht verloren, nur weil sich das CMS darunter geändert hat.

Mitgliedsanträge gehen direkt an Telegram, nicht in ein Postfach. Bewerber füllen ein Formular auf der Website aus; der Vorstand bekommt eine Nachricht mit Annehmen/Ablehnen-Buttons und kann direkt vom Handy aus reagieren. Kein Postfach zum Durchsehen, keine manuelle Dateneingabe, keine Anträge, die still versanden.

Eine BMW-Enzyklopädie, gestützt auf eine kleine KI-Recherche-Pipeline. Statt die Chassis-Geschichte jeder Generation von Hand zu schreiben, recherchiert eine begleitende CLI ein Chassis (Anthropic API + Websuche), entwirft Einträge in allen drei Sprachen und hinterlässt sie als überprüfbaren Diff — nichts wird veröffentlicht, ohne dass ein Mensch zuerst die Quellen liest. Fünf Einträge (E92, F30, E34, E53, E87) sind auf diesem Weg entstanden.

Eine Fotogalerie, die die gesamte Clubgeschichte abdeckt, live von Flickr geladen — 39 Alben, von 2002 bis heute — statt Tausende Bilder selbst zu hosten und zu pflegen.

Technischer Stack

Next.js 16 (Turbopack), TypeScript, Tailwind CSS v4, next-intl, Vitest. Keine Datenbank — Content lebt in MDX und typisierten Datendateien, und die beiden Stellen mit echtem "State" (Fotos, Mitgliedsanträge) leben dort, wo sie ohnehin hingehören: Flickr und Telegram. Hosting und laufende Wartung bleiben dadurch nahe null.

Ergebnis

Das hier ist kein Drei-Wochen-Sprint wie die Projekte oben — es ist eine Website, die ich aktiv für eine Community pflege, zu der ich selbst gehöre. Zuletzt behoben: ein Metadata-Bug, bei dem auf jeder Seite die Open-Graph-Tags stillschweigend Bild und Site-Name verloren haben (eine echte Next.js-Falle — eine Seite, die ihr eigenes openGraph setzt, ersetzt das der Elternebene komplett, statt es zu mergen), ein Galerie-Filter, der hart auf 6 von 39 Alben begrenzt war, ein randloser Foto-Hero, sowie der Umzug auf eine eigene Domain samt Analytics und Search-Console-Verifizierung.

Warum das zählt

Dreisprachigkeit von der Architektur an bedeutet, dass die russisch- und englischsprachigen Mitglieder des Clubs nie eine zukünftige Migration waren — sie wurden von Tag eins an bedient.

Die Telegram-Freigabe wurde angenommen, weil die Reibung entfernt wurde, nicht weil jemandem gesagt wurde, ein neues Tool zu benutzen. Ein Feature, an das niemand denken muss, gewinnt automatisch.

Die KI-Recherche-Pipeline bleibt absichtlich überprüfbar. Falsche Angaben zu bekannten Schwachstellen oder Motordaten eines Chassis würden bei einer Enthusiasten-Zielgruppe echtes Vertrauen kosten — Geschwindigkeit zählt hier nur, wenn Genauigkeit nicht der Preis dafür ist.

Der Open-Graph-Bug ist die universellere Lektion. Es ist genau die Art von stillem SEO-Leck — Seiten, die bei jedem Teilen kommentarlos ihr Vorschaubild und ihren Titel verlieren —, das monatelang echte Sichtbarkeit kostet, bevor jemand auf die Idee kommt, nachzusehen. Ein Audit lohnt sich auch bei einer Website, von der alle annehmen, sie "funktioniere ja schon".

Das ist ehrenamtliche Arbeit für eine Community, zu der ich gehöre, kein bezahlter Auftrag — es gibt also keine Kundenrechnung, auf die ich verweisen kann. Aber der Maßstab ist derselbe, an dem ich ein Kundenprojekt messen würde, und es ist genau das Audit, das ich bei jeder bestehenden Website vor der ersten Zeile neuen Feature-Codes durchführen würde.


Migrierst du eine alte WordPress-Website, oder fragst du dich, was in den Metadaten deiner eigenen Website still kaputt ist? Lass uns sprechen.