Home / Work / strong-plant.com
WEB PLATFORM · CORPORATE & CATALOGUE

A catalogue site
with no database
to break.

strong-plant.com presents three divisions — Energy, Equipment and Trading — across a deep catalogue of generators, excavators, dump trucks, access platforms and services. It ships as static files: no server to patch, no database to fail, no runtime cost. The content is a typed data model in the repository, so a spec change is a code review, not a CMS edit nobody notices.

Client
Strong Plant Holding LLC (UAE / MENA)
Type
Corporate + catalogue marketing site
Framework
Next.js 15 App Router, static export
Styling
Tailwind v4, brand tokens via @theme
Hosting
Cloudflare Pages (edge, static)
Runtime cost
None — nothing executes on request
3
Divisions, one identity
0
Servers or databases in production
100%
Pages pre-rendered with own OG image
/ 01
The Problem

The group's previous site was a static page set that had accumulated over years. It did not reflect the three-division structure, the equipment catalogue was out of date, and nothing about it supported the tender-driven sales motion the business actually runs on — where a prospect wants to confirm you hold a specific machine class before they call.

A conventional CMS was the wrong answer. The content is not editorial; it is specification data — models, capacities, ratings, categories. Specification data in a CMS drifts, because nothing enforces its shape and nobody reviews an edit.

/ 02
The Approach

The catalogue is a typed content model in the repo — generators, equipment, industries and services as TypeScript data with enforced shapes. Adding a machine means adding a typed record; getting it wrong fails the build rather than shipping a broken page. Content changes travel through the same review as code.

Pages are statically exported and served from Cloudflare's edge. Nothing runs on request, so there is no origin to attack, no dependency to patch on a schedule, and no traffic spike that costs money. For a business whose site exists to be found and to build confidence, that is the correct trade.

SEO infrastructure is generated rather than maintained by hand: sitemap.ts and robots.ts derive from the route tree, so a new equipment page is discoverable the moment it exists. Every page carries its own metadata and its own Open Graph image — a link shared into WhatsApp or a tender email renders as that specific machine, not a generic logo card.

Brand tokens are ported from the same source of truth that drives the brand system rather than reinvented in CSS — so the website and the printed quotation agree on what Ironwork Navy is.

/ 03
The Hard Parts
  1. Three divisions without three websites Energy, Equipment and Trading have different buyers and different vocabularies, but the group's whole brand strategy is a unified house. The information architecture separates the offers while the visual system stays deliberately identical.
  2. Real photography at catalogue scale Dozens of equipment classes each need a credible image and an OG card. Assets were imported and processed through a scripted pipeline rather than hand-exported, so refreshing the imagery is a command rather than a week.
  3. Contact without a backend A static site has nowhere to POST a form. Enquiries are composed into structured mail handoffs, keeping the zero-backend property intact while still routing a qualified enquiry to the right division.
/ 04
The Outcome

A fast, credible, crawlable corporate presence that matches the physical brand a prospect sees on site. Pages are pre-rendered and edge-served, so load times hold up on a phone on a construction site — which is where a lot of this audience actually browses.

Because the catalogue is typed data, the site is cheap to keep true. The failure mode of most B2B sites — specifications quietly going stale until nobody trusts them — is structurally harder here.

The same discipline shows up in the rest of our web work: content that is structurally hard to get wrong beats content that merely happens to be right on launch day.

Stack Next.js 15 React 19 TypeScript (strict) Tailwind CSS v4 Framer Motion Static export Cloudflare Pages Bun Generated sitemap / robots JSON-LD structured data Sharp image pipeline

Specifications belong in a type system,
not in a rich text editor.

A SITE THAT EARNS ITS KEEP

If a prospect can't verify what you offer
in thirty seconds, they call someone else.

Contact Us →