Qonflate
← Alle Arbeiten

Gourmet's International Srl — The WineHunter, Merano WineFestival

Das WineHunter-Ökosystem

Neun öffentliche Systeme für einen Kunden, seit 2022 eines nach dem anderen gewachsen — Festival- und Veranstaltungsseiten, eine Markenseite, eine Unternehmensseite, ein Prämierungskatalog, ein Club für Einkäufer, Produzentenvitrinen und jetzt eine App — sieben davon lesen aus einer Plattform, und alle laufen als ein System.

Status
In Produktion
Rolle
Design, Entwicklung und Betrieb, als einziger Entwickler
Zeitraum
seit 2022, laufend
Stack
NestJS · Prisma · PostgreSQL · RedisNext.jsWordPress · PHP 8.3AstroExpo · React Native
  • 9öffentliche Systeme
  • 52.836Produkte im Katalog
  • 24EU-Sprachen auf dem E-Label
  • 4Server

Die Ausgangslage

The WineHunter ist die Prämierung und der Guide hinter dem Merano WineFestival, betrieben von Gourmet’s International in Südtirol. Über die Jahre war sein öffentliches Gesicht zu einer Reihe getrennter Systeme gewachsen: eine Festivalseite mit Ausstellern, Programm und Partnern; eine Markenseite; ein Club für Einkäufer; Prämierungslisten; Produzentenvitrinen. Jedes hielt seine eigene Kopie der Fakten. Der Name eines Produzenten lebte an fünf Orten — und mit ihm jeder Fehler.

Der Auftrag: daraus eine Sache machen, ohne daraus eine einzige Website zu machen.

Wie es gewachsen ist

  • 2022 — Die ersten Aufträge: die Ausstellerseiten und die Vorlagen des Jahres auf der Festival-Website, und die Listen dahinter.
  • 2023 — Hosting und Systemadministration wechseln zu Qonflate. Die Idee einer Plattform hinter allen Seiten wird für einen Innovationsförderantrag ausformuliert.
  • 2024 — Webshop und Online-Anmeldung des FarmFood Festivals, und der erste Prämierungskatalog, auf CouchDB.
  • 2025 — Weitere Veranstaltungsseiten für denselben Kunden, jede ein eigenes WordPress mit einer eigenen Kopie der Fakten — das Jahr, das die Plattform nötig machte.
  • 2026 — Die Plattform, gebaut ab Mai. Im September lesen Prämierungskatalog, Festival-Plugin, Markenseite, Einkäuferclub, Produzentenvitrinen und E-Labels, Unternehmensseite und Wine&Siena daraus oder laufen daneben; die App folgt für November.

Was gebaut wurde

Die Plattform. Eine API-first Source of Truth auf NestJS, Prisma und PostgreSQL, mit Redis für Caching und Warteschlangen: Produzenten, Produkte, Bewertungen, Veranstaltungen, Teilnahmen, CRM, Mitgliedschaften, Rechnungsstellung, Masterclasses. 138 Datenmodelle in 322 Migrationen und 68 API-Modulen, mit einem Next.js-Backoffice, das zugleich der eigene Bereich der Produzenten ist. Jedes andere System liest von hier, und keines schreibt anderswohin.

Der Prämierungskatalog. Eine öffentliche Next.js-Seite mit eigenem PostgreSQL, gespeist aus einer versionierten Projektion der Plattform: ein Änderungsjournal, Tombstones für Rücknahmen und ein nächtlicher Abgleich, der beide Seiten vollständig vergleicht. 52.836 Produkte; 52.906 URLs in den Sitemaps.

Die Festivalseite. WordPress, beibehalten — die Redaktion kennt es —, mit einem eigens entwickelten Plugin, das Aussteller, Programm, Masterclasses, Hotels und Partnerwände live aus der Plattform veröffentlicht. Die Ausstellerseite trägt 490 Aussteller und rund 6.400 Bilder. Sie wird aus einem statischen Cache in 0,11 Sekunden ausgeliefert, ohne PHP im Pfad, und 6.700 ihrer 6.748 Asset-Referenzen kommen von einem CDN, das mit drei WordPress-Filtern und ohne eine einzige Template-Änderung eingeführt wurde.

Der Einkäuferclub. Eine framework-freie PHP-8.3-Anwendung, die jede Seite selbst rendert und Server-zu-Server mit der Plattform spricht. Sie speichert keine Mitgliederdaten, und kein Schlüssel erreicht je einen Browser. Dreisprachig, mit Kalenderexport der Termine jedes Mitglieds.

Produzentenvitrinen und das EU-E-Label. Eine Astro-Anwendung auf einem zweiten Host: eine Seite pro Produzent, ein Pass pro Produkt und — auf einer eigenen Domain — das gesetzliche E-Label in 24 EU-Sprachen. Diese Seite liefert kein Skript, kein Cookie und keinen ausgehenden Link, und ihre URL leitet sich aus der Kennung der Plattform selbst ab, sodass ein auf Glas gedruckter Code jede Datenbank dahinter überlebt.

Wine&Siena. Die WordPress-Seite der Veranstaltung in Siena, mit einem neuen Theme von Grund auf — kein Page-Builder, kein jQuery, keine externen Schriften — und der Ausstellerliste live aus der Plattform.

Die Unternehmensseite. Die Website von Gourmet’s International selbst: WordPress in einem Zug von 5.1 auf 7.1 gebracht, das Theme zum eigenen gemacht, drei Sprachen ohne die Plugins, die sie bisher trugen.

Die Companion-App. Expo und React Native: ein Binary für Besucher, Konsumenten, Einkäufer und Produzenten, offline-first, in Arbeit für das Festival im November 2026.

Was es zusammenhält

Drei Regeln leisten den Großteil der Arbeit.

Regeln werden auf der untersten Ebene durchgesetzt. Ein Constraint in der Datenbank, dann ein generierter Typ, dann ein Schema, dann eine Prüfung im Service, dann die Oberfläche. Eine Regel, die nur in einem Formular lebt, ist eine Regel, die das nächste System bricht.

Öffentliche URLs sind dauerhaft. Pfade sind Primärschlüssel. Zeilen werden nie gelöscht; eine Umbenennung behält den alten Pfad als Weiterleitung; ein zurückgezogenes Produkt antwortet mit 410 und einer Seite, die sich selbst erklärt. Nichts wird je neu vergeben.

Abwesenheit wird nie als Löschung behandelt. Ein Feed, der nicht mehr antwortet, leert keine Seite. Jedes System liefert seinen letzten guten Stand weiter, markiert die Lücke und zählt sie in seinem Health-Endpoint, sodass ein Ausfall oberhalb unterhalb als Warnung gelesen wird — nicht als leere Seite.

Betrieb

Vier Server, Docker und Caddy, Deployments, die aus dem neuen Image migrieren, während das alte noch ausliefert, Backups per Timer und auf jedem System ein Health-Endpoint, der die tatsächlich ausgelieferte Version meldet. Die Analytik wanderte auf ein einziges selbst gehostetes, cookiefreies Matomo für das ganze Ökosystem und wurde von außen verifiziert: Kein Cookie verlässt den Server, und Do Not Track wird auf Ebene der Rohdaten respektiert.