The publication’s needs had changed
This is a custom multilingual CMS build: a locale-aware content model that pairs German and English so editors, filters and search all agree on what a translation means. The Republic is a German civic and political publisher. Its platform supports articles, opinion, events, publications and organisational content. As its work moved toward publishing and conferences, the earlier reader-community application no longer matched what the organisation needed to manage.
Autonomous’s consulting relationship dates back to November 2021. The later replatform grew within that relationship. The job was to give editors a content model that reflected the publication, support German and English coherently and allow the public website to develop without turning every page change into a backend task.
Model the publication before designing the multilingual CMS API
We described how the publication actually works before writing the API, so a German article and its English version are linked inside the system instead of living as two unrelated pages. The replacement pairs Wagtail and Django for content management with a Next.js frontend. Articles, events, publications and related editorial material have defined structures. Locale-aware models pair German and English versions through a shared translation identity.
This is a content-management structure, not a promise of automatic translation. Editors still need to create and maintain the language versions. The platform gives those versions an explicit relationship so the application can reason about them consistently. That is more dependable than treating translated labels as unrelated strings scattered across the frontend.
Workflow: Editorial content → Paired locales → Delivery API → Reader experience.
Fix the queries that cross language boundaries
A bilingual site can look fully translated and still return the wrong results, so we made filtering and search agree with the language a reader is actually using. One important correction involved category filtering. A German category and its English equivalent are distinct records. Filtering only on the requested record’s identifier could miss the corresponding articles in the other locale. The solution used the shared translation identity when resolving the category relationship.
Search also needed language-aware behaviour across articles, events and publications. These details are easy to overlook when the page itself looks translated. A bilingual site must also return the right content when a reader searches, filters and follows relationships. The model and the queries need to agree about what a translation means.
Give editors room to compose useful pages
Editors can now assemble most new pages themselves from ready-made blocks instead of asking a developer for a new template. Flexible pages provide twenty-one editor-selectable block entries built from reusable content blocks. An editor can assemble supported page sections without a developer creating a unique template for each new organisational page. Structured forms and newsletter capture are also part of the platform.
A documented delivery API connects the content system to the frontend. The German back catalogue was imported into the new content tree using a repeatable import operation.
Support continued when the backend was quiet
The founder confirmed that the site stayed live and the retainer continued through two periods without backend changes: approximately eighteen months and ten months. Those gaps reflect periods when the platform did not need backend work, rather than a lapse in the relationship. A separate fixed-scope go-live phase followed in 2026.
The result is a bilingual publishing foundation with flexible editorial tools and an engineering relationship that continued across changes in scope. The code belongs to the client. The continuing relationship covers platform builds, support and go-live work, with ownership sustained across those different needs.
People behind the work

Questions and answers
Does publishing in German automatically create English copy?
No automatic translation claim is made. The CMS structures and pairs language versions so editors can maintain bilingual content within one platform.
Why can category filters break on a bilingual site?
Equivalent categories can have different database identifiers in each locale. Queries need to use the translation relationship when that is the intended behaviour, instead of assuming one identifier covers both languages.
Can editors create pages without development work?
They can compose flexible pages using the supported blocks. A new content type or interaction outside those capabilities still requires design and implementation.
What should a bilingual replatform establish first?
Define the content types, the relationship between language versions and the expected behaviour of search and filtering. Then decide which pages editors can compose themselves and where bespoke development remains necessary.

