work details

Kühlturm — German and English Cooling Tower B2B Platform

A German/English B2B cooling tower platform for the Ensotek sub-brand Kühlturm, with its own API, admin panel and data store.

Client

Kühlturm (Ensotek)

Start

01 Apr 2025

Completed

23 May 2026
Kühlturm homepage: industrial cooling tower solutions
Description

A German/English B2B cooling tower platform for the Ensotek sub-brand Kühlturm, with its own API, admin panel and data store.

Case study

Challenge

Kühlturm was derived from the ensotek.de codebase and in production still shared its database, so a settings change on one site could affect the other. The English interface largely repeated German text, and sub-pages declared the home page as their canonical.

Approach

With full backups, Kühlturm was moved to its own database, product and service modules were made site-specific and media moved to the site's own storage. The English dictionary was retranslated; canonicals, hreflang, the sitemap and 404/5xx behaviour were fixed per page, and admin endpoints were tied to role checks.

Outcome

Kühlturm now runs with its own API, panel, database and media storage; a change on ensotek.de no longer affects it. German and English pages are indexable under their own URLs, and the brand addresses the DACH market with a voice of its own.

Tools

Next.js, React, TypeScript, Fastify, Drizzle ORM, MySQL, Bun, Zod, next-intl, Tailwind CSS

Key Features
  • German-first B2B site with English as second language

  • 4 GRP tower series and 13 spare-part entries

  • 9 services: maintenance, retrofit, SCADA, commissioning

  • API, panel, database and media separate from Ensotek

  • Per-product specifications, FAQ and review management

  • Quote form, catalogue request and Telegram alerts

  • Per-page canonical, DE/EN hreflang, 308 redirects

  • Product, Organization, FAQ schema and llms.txt

Technologies Used
  • Next.js

  • React

  • TypeScript

  • Fastify

  • Drizzle ORM

  • MySQL

  • Bun

  • Zod

  • next-intl

  • Tailwind CSS

Design Highlights
  • German as default language; the English interface is a genuine translation, not copied text

  • Structured around German buyers' questions: selection, maintenance/modernisation, spare parts, automation

  • Visible quote call-to-action on mobile, clear focus states and larger slider touch targets

  • Tracking only after consent; real 404s kept apart from server errors

Details

Kühlturm is the sub-brand Ensotek created for German-speaking markets. When an energy, process or building services engineer in Germany searches for “Kühlturm Hersteller” or “Kühlturm Wartung”, they should land on a brand that speaks their language and answers technical questions in German, not on a manufacturer site translated from Turkish. This project builds the digital side of that brand: a German-first, English-second B2B platform with its own API, admin panel and database.

Context and requirements

Kühlturm was derived from the ensotek.de codebase. That gave it a fast start but carried two risks: duplicate pages across two domains fed from the same content pool, and settings changed on one site leaking into the other. The German buyer's decision process is also different: model selection and capacity, maintenance and modernisation of existing plants, identifying spare parts and automation questions come first. The site structure and content plan were built around these themes, informed by a review of manufacturer and service websites in the German market.

Solution and scope

Visitors land on the German interface by default; the English version is a genuine translation of the same content. The site is organised into:

  • Produkte: four tower series with GRP casings — a closed-circuit tower plus single, double and triple-cell open-circuit models, each with a specification table, gallery, FAQ and reviews.
  • Ersatzteile: 13 spare-part entries, including fan and motor-gearbox assemblies, nozzles, drift eliminators, PVC film fill, splash grids, Raschig rings, air inlet louvres, water distribution systems and FRP pultruded profiles.
  • Leistungen: nine service pages — maintenance and repair, modernisation/retrofit, spare parts, automation and SCADA, engineering support, site surveys, performance optimisation, commissioning and emergency response.
  • Lösungen: solution pages for industrial, HVAC and process cooling.
  • Referenzen, Projekte, Bibliothek: reference companies, project pages and a technical library covering cooling tower basics, open versus closed circuit, selection criteria and the brochure.
  • Quote and catalogue request: a quote form and catalogue request, reachable directly from product and service pages.

Admin panel

Kühlturm has its own admin panel working only with German and English content. It manages products and spare parts with per-product specifications, FAQs and reviews; services, projects, references, library documents, custom pages, slider, menu and footer; incoming quotes, catalogue requests and contact messages; email templates, Telegram notifications, site settings, users, roles, the audit log and an IP blocklist. Every admin endpoint sits behind authentication and the admin role: anonymous requests get 401, unauthorised users 403.

Technical architecture

The front end runs on Next.js 16, React 19, next-intl and Tailwind CSS v4; the API on Fastify 5, Drizzle ORM, MySQL, Zod and Bun. Cross-cutting features (authentication, storage, quotes, catalogue requests, notifications, audit) come from the Ensotek family's shared backend package, while the product and service modules are local to preserve Kühlturm's data contract.

Data isolation

The most important step was to genuinely separate Kühlturm from ensotek.de. In a migration with full backups, Kühlturm moved to its own database, with a database user authorised for that database only. Product and service endpoints now point to the Kühlturm API. Media files moved to the site's own storage, so an image deleted on one site can no longer remove a file on the other. During cut-over, critical business tables were compared row for row, and product/service endpoints and file access were checked for parity with the previous API.

Search visibility

Every indexable page declares its own URL as canonical and links to its DE/EN counterpart via hreflang. The sitemap carries lastmod data, old service URLs redirect with 308, missing content returns a real 404 and server-side failures a 5xx. Product, Organization and FAQ structured data, an llms.txt file and company information that states the Ensotek sub-brand relationship explicitly give AI-driven search a readable foundation as well.

Integrations

  • PDF quote documents generated with Puppeteer, and SMTP email sent from the brand's own domain
  • Telegram notifications for new quotes and catalogue requests
  • A key-protected, read-only content API for the Tanitio marketing platform
  • GA4 and Search Console measurement; tracking only starts after the consent gate

Outcome

Kühlturm is live on kuhlturm.com in German and English and runs independently of ensotek.de with its own API, panel, database and media storage. It benefits from the Ensotek family's shared core while giving the German-speaking market its own voice, URL structure and data ownership. Selection and capacity guides, a guide to the plant data needed for maintenance quotes and spare-part identification content are planned as the next content work.