Work · Case study
Four markets, four languages, and an editor who no longer files a ticket.
01 / Challenge
A cybersecurity and risk assurance firm operating in the UK, Germany, the Netherlands and Sweden had no unified platform for its service portfolio. Every page change went through a developer, there was no API for CRM or future front ends, and the SEO layer had no structured metadata, no schema and no per-language sitemaps in any of the four markets.
02 / Approach
Drupal was configured as a pure content backend, exposing everything through a hardened REST API and JSON:API. That decision was made for what comes next rather than what exists now — a separate JavaScript front end, a mobile app or a third-party integration can all read the same content without a second build.
Drupal's JSON:API and REST endpoints are open by default, which is fine for a blog and wrong for a corporate platform. Three custom modules closed it: one blocks every /jsonapi/ route at the routing layer for unauthenticated requests, one enforces role-based access on REST routes, and one validates a stateless auth-token header against a per-user API key on every JSON request. Multi-layer stateless security, without OAuth's overhead.
Multilingual SEO was solved once at the configuration layer rather than per page. Hreflang, translated metatags, language-aware URL aliases and per-language sitemaps are inherited automatically by all twelve content types, so a new service page is correctly internationalised the moment an editor saves it. Sixty component types were built as mix-and-match paragraphs, which is why the editorial team now composes hero banners, stat sections, compliance tables and job listings without opening a ticket.
03 / Outcome
language markets
page components
service areas live
The site is live in four markets with correct hreflang, translated metadata and language-specific sitemaps in each. The editorial team publishes, translates and manages every page, news item, FAQ and job listing with no developer involvement, and a careers portal with filterable listings replaced recruitment by PDF. All REST and JSON:API endpoints answer unauthorised requests with 401 or 403, which is what made CRM integration safe to switch on.