Projekt-Details

Ensotek — Shared-Core Multi-Brand B2B Platform Suite

Eine mehrsprachige industrielle B2B-Plattformfamilie für Ensotek, Kühlturm und Karbon Kompozit, die gemeinsame Pakete mit separaten Bereitstellungen und Datenbanken für jede Marke verwendet.

Kunde

Ensotek

Start

15 Sep 2025

Abgeschlossen

Website

ensotek.de
Ensotek — Shared-Core Multi-Brand B2B Platform Suite – Benutzeroberfläche und Projektansicht
Beschreibung

Eine mehrsprachige industrielle B2B-Plattformfamilie für Ensotek, Kühlturm und Karbon Kompozit, die gemeinsame Pakete mit separaten Bereitstellungen und Datenbanken für jede Marke verwendet.

Fallstudie

Herausforderung

Die vier Marken von Ensotek hatten ähnliche Abläufe, aber unterschiedliche Anforderungen an Sprache, Markt und Recht. Vier getrennte Codebasen hätten den Wartungsaufwand vervielfacht, eine gemeinsame Datenbank dagegen das Risiko, dass Daten und Einstellungen zwischen den Marken durchsickern.

Vorgehen

Gemeinsame Fastify-Module, Komponenten für die Admin-Oberfläche, Typen und Konfiguration wurden in einer Paketschicht gebündelt, die jede Marke mit eigenem Repository, eigener Datenbank und eigenem Deployment nutzt. Module reiften zunächst auf einer Website und wanderten dann ins Paket; das Angebotsmodul wurde mit websiteeigener PDF-Vorlage vereinheitlicht und Kühlturm in eine eigene Datenbank überführt.

Ergebnis

Alle vier Websites laufen heute unabhängig und speisen sich aus demselben Kern; eine gemeinsame Korrektur ist in der ganzen Familie nutzbar, eine Datenänderung auf einer Website bleibt dort. ensotek.de ist als Hauptwebsite der Familie in drei Sprachen live – mit Kundenkonto und umfangreichen technischen Inhalten.

Tools

Next.js, TypeScript, Fastify, Drizzle ORM, MySQL, Bun, Docker, Nginx

Hauptfunktionen
  • 4 Domains, 4 getrennte Datenbanken, eine gemeinsame Paketschicht

  • Gemeinsame Fastify-Module: Produkte, Angebote, Katalog

  • Gemeinsames Angebotsmodul, PDF-Vorlage pro Website

  • ensotek.de: Deutsch als Standard, Inhalte in DE/EN/TR

  • Kundenkonto mit Support-Tickets und Benachrichtigungen

  • hreflang nach Inhalts-ID, 308-Weiterleitungen, echte 404

  • Markenname und Logo aus Einstellungen statt aus dem Code

  • Versionierter, schreibgeschützter Content-Vertrag für Tanitio

  • API-Brücke zur Pflege der Website-Inhalte aus dem ERP

Verwendete Technologien
  • Next.js

  • TypeScript

  • Fastify

  • Drizzle ORM

  • MySQL

  • Bun

  • Docker

  • Nginx

Design-Highlights
  • Jede Marke spricht ihre eigene Sprache und Zielgruppe an; gemeinsam sind die Abläufe, nicht die Oberfläche

  • Auf ensotek.de folgt die Sprachzuordnung Inhalts-IDs statt Slugs – übersetzte Adressen führen zum richtigen Gegenstück

  • Produktseiten werden serverseitig gerendert, Icon- und Theme-CSS auf die genutzten Teilmengen reduziert

  • Ein Dashboard, das Support-Tickets, Benachrichtigungen und Angebots-Schnellzugriffe für registrierte Kunden bündelt

  • Markenprüfung als Release-Schranke: Eine Installation für ein neues Unternehmen zeigt nie eine fremde Marke

Details

Ensotek ist heute unter vier Domains online: mit der in Deutschland angesiedelten Hauptwebsite ensotek.de, mit ensotek.com.tr für den türkischen Markt, mit der Tochtermarke kuhlturm.com für den deutschsprachigen Raum und mit karbonkompozit.com.tr für die Verbundwerkstofffertigung. Jede Website hat ihre eigene Sprache, Zielgruppe und rechtliche Rahmenbedingungen – die zentralen Abläufe sind jedoch gleich: Produktkatalog, technische Bibliothek, Angebote und Kataloganfragen. Diese Fallstudie beschreibt den gemeinsamen Kern, aus dem alle vier Websites als eine Softwarefamilie hervorgehen, sowie ensotek.de, das erste und umfangreichste Mitglied dieser Familie.

Ausgangslage: Warum ein gemeinsamer Kern?

Es gab zwei naheliegende Wege, und beide waren riskant. Vier getrennte Codebasen zu kopieren hätte bedeutet, jeden Fehler viermal zu beheben und die Websites mit der Zeit auseinanderdriften zu lassen. Ein klassisches SaaS mit einer gemeinsamen Datenbank und Mandanten-ID hätte dagegen das Risiko gebracht, dass Daten oder Einstellungen einer Marke bei einer anderen landen – solange zwei der Websites vor ihrer Trennung noch eine Datenbank teilten, zeigte sich genau das als reales Problem. Das gewählte Modell liegt dazwischen: gemeinsame Pakete, dazu pro Marke ein eigenes Repository, eine eigene Datenbank und ein eigenes Deployment. Ehrlich benannt ist das kein mandantenfähiges SaaS mit einer einzigen Datenbank, sondern eine Mehrmarken-Plattformfamilie mit gemeinsamem Kern.

Der gemeinsame Kern

Die über einen Bun-Workspace verbundene „packages“-Schicht besteht aus fünf Paketen:

  • shared-backend: Fastify-Module für Authentifizierung, Speicher, Website-Einstellungen, Produkte, Kategorien und Unterkategorien, Galerie, Referenzen, Bewertungen, Bibliothek, individuelle Seiten, Angebote, Kataloganfragen, Kontakt, Newsletter, Benachrichtigungen, Audit-Log, Telegram, E-Mail-Vorlagen, Menü, Footer, Slider, Leistungen und Support-Tickets; Plugins für MySQL, JWT, Redis, Sentry, Swagger und statische Dateien; Middleware für Authentifizierung, Rollen und Sprache.
  • shared-ui: Datentabelle und gemeinsame Oberflächenkomponenten für die Admin-Panels.
  • core, shared-types, shared-config: API-Schicht für das Frontend, gemeinsame Typen, TypeScript-Basiskonfiguration und Tailwind-Design-Tokens.

Die Websites nutzen den Kern unterschiedlich stark. ensotek.de ist Code der ersten Generation mit überwiegend lokalen Modulen; ensotek.com.tr läuft nahezu vollständig auf gemeinsamen Modulen und hat nur vier lokale. Diese Abstufung ist gewollt: Ein Modul reift zunächst auf einer Website und wandert dann ins Paket. Das Angebotsmodul ist ein Beispiel dafür – es liegt inzwischen im gemeinsamen Paket, und jede Website liefert nur ihre eigene PDF-Vorlage im Markendesign. Markenname, Logo und Kontaktdaten stammen aus den Website-Einstellungen statt aus dem Code; eine Markenprüfung vor jedem Release erkennt fest im Quelltext verankerte Markennamen.

ensotek.de: die Hauptwebsite

ensotek.de ist mit Deutsch als Standardsprache sowie englischer und türkischer Fassung live und hat die umfangreichste Inhaltsstruktur der Familie:

  • Produkte und Ersatzteile, Leistungen, Lösungen für Industrie-, HLK- und Prozesskühlung, Projekte und Referenzen
  • Technische Bibliothek, Qualitätszertifikate, Mission und Vision, Team, News, Blog und FAQ
  • Angebotsformular, Kataloganfrage, Kontakt sowie Rechtstexte einschließlich eines Impressums nach deutschen Vorgaben
  • Kundenkonto: Nach Registrierung und Anmeldung zeigt ein Kunden-Dashboard Support-Tickets nach Status und Priorität, zählt ungelesene Benachrichtigungen und bietet Schnellzugriffe auf Angebots- und Kataloganfragen

Für die Suche beruht die Sprachzuordnung auf Inhalts-IDs statt auf Slugs: Auch wenn die deutsche und die türkische Adresse eines Produkts unterschiedlich lauten, verweist hreflang auf das richtige Gegenstück. Alte Adressen leiten per 308 weiter, fehlende Inhalte liefern ein echtes 404, und die Sitemap umfasst alle Inhalte in allen drei Sprachen. Strukturierte Daten für LocalBusiness, FAQ, Breadcrumb und Article sowie eine llms.txt sind live. Für die Performance werden Produktseiten serverseitig gerendert, Icon- und Theme-CSS wurden auf die tatsächlich genutzten Teilmengen reduziert.

Admin-Panels

Jede Website hat ein eigenes Panel auf Basis von Next.js 16 und Redux Toolkit. Im Panel von ensotek.de werden Produkte und Ersatzteile, Kategorien, Leistungen, Projekte, Referenzen, Bibliothek, individuelle Seiten, Angebote (Detailansicht und PDF), Kataloganfragen, Kontaktnachrichten, Support-Tickets, FAQ, Slider, Menü, Footer, E-Mail-Vorlagen, Telegram, Benutzer, Rollen, Audit-Log und Website-Einstellungen verwaltet. Außerdem enthält das Panel eine Wissensdatenbank für einen KI-gestützten Support-Chat; die Chat-Infrastruktur ist vorhanden, auf der öffentlichen Website derzeit aber nicht aktiviert.

Technische Architektur und Sicherheit

  • Stack: Next.js 16, React 19, next-intl, React Query, Tailwind CSS v4; Fastify 5, Drizzle ORM, MySQL, Zod, Bun; API-Dokumentation mit Swagger.
  • Isolation: Der Datenbanknutzer jeder Website ist nur für deren eigene Datenbank berechtigt; bei der Trennung von Kühlturm wanderten auch die Mediendateien in einen websiteeigenen Speicher.
  • Sicherheit: Fehlen JWT- und Cookie-Secrets, startet die Anwendung nicht; alle Admin-Endpunkte erfordern Authentifizierung und Administratorrolle; öffentliche Einstellungsendpunkte geben keine geheimen Werte zurück.
  • Betrieb: PM2-Prozesse hinter Nginx, Deployment-Skripte mit Sicherung, Health-Check und Rollback.

Integrationen

  • PDF-Angebote im Markendesign mit Puppeteer, SMTP-E-Mail und Telegram-Benachrichtigungen
  • Ein gemeinsamer, versionierter und schlüsselgeschützter Lese-Vertrag für Inhalte der Marketingplattform Tanitio; alle vier Websites liefern ihn mit ihrem eigenen Sprachprofil aus
  • Messung mit GA4 und Search Console
  • Der Bereich „Websites“ im Ensotek-ERP: Inhaltspflege mit Website-Auswahl und Übernahme von Web-Anfragen ins ERP, jeweils über die eigene Admin-API der Website; technisch ausgeliefert, die Abnahme durch den Kunden läuft

Heute

Alle vier Websites sind live; jede läuft mit eigener Domain, Sprache und Datenbank unabhängig und speist sich doch aus demselben Kern. Eine Korrektur im gemeinsamen Paket lässt sich ohne Neuschreiben in der ganzen Familie nutzen, während Daten- oder Einstellungsänderungen auf einer Website auch dort bleiben. Für die Domain ensotek.com ist eine weitere Website geplant.