Zes domeinen, twee hostingstacks. Elk domein doet één ding voor één publiek. Deze pagina legt uit wat waar staat, hoe we het opzetten, en waarom de stack zo gesplitst is.
Hoofdmerk. Diensten, consultancy, building, innovation. Hier branden we. Het verhaal voor de MKB-beslisser die ons via Google vindt: wat bouwen we, voor wie, en hoe je vandaag iets installeert.
Platformpropositie. ConNext als product. Voor de overheid- en MKB-beslisser die het systeem-niveau wil zien: app-ecosysteem, workspace + apps, "wat is ConNext".
Per-product. Eén subdomein per app: opencatalogi, openregister, docudesk, mydash, openconnector, en de rest. Voor de gebruiker en developer die specifiek met die app aan de slag wil. Docs, API, install-link.
App store. Onze eigen catalogus. Gebouwd op OpenCatalogi, want we dogfooden ons eigen product. Externally linked vanuit elke andere site, want hier komt de "installeer nu"-knop.
Hostingpropositie. Voor klanten die hun eigen Nextcloud-omgeving willen, beheerd door ons. Apex-domein, dus eigen GitHub Pages-repo met eigen CNAME. Brand-kleur is Common Ground-geel, niet kobalt: dit is de Common Ground-tak, geen Conduction-tak.
Klantomgeving. Echte Nextcloud-instances per klant. Geen GitHub Pages, geen statische bouw. Live applicatie met data, gebruikers, integraties. Dit is de werkende software, niet de propositie.
Gerenderd met <cn-domain-tree> + <cn-hex>.
Voor alles dat marketing- of docs-content is. Statisch, version-controlled, deploybaar via een GitHub Actions-workflow. Eén repo per subdomein, want GitHub Pages bindt één custom domain per repo.
connext-repo voor connext.conduction.nl, opencatalogi-repo voor opencatalogi.conduction.nl, enzovoort.@conduction/docusaurus-preset. Eén npm-package met de brand-tokens, theme, navbar, footer. Elke site importeert hem; visuele consistentie zonder mono-repo.static/CNAME. GitHub leest hem bij elke deploy.main bouwt en publiceert naar gh-pages. Live binnen één tot twee minuten.Voor alles dat CMS-content is, of een echt product is. We dogfooden onze eigen apps: het hoofdmerk en de app store draaien op OpenCatalogi, klantomgevingen draaien op standaard Nextcloud.
[client].commonground.nu is een werkende Nextcloud-instance per klant, met hun eigen data en gebruikers. Geen marketing-laag.Docusaurus 3 ondersteunt meertaligheid native. Eén build genereert alle vier de talen in dezelfde build/-output. Nederlands is default en woont op de root; de overige talen krijgen een sub-pad: /en/, /de/, /fr/. Marketingtekst en docs zijn dus altijd in vier talen beschikbaar zonder aparte deploys.
/, schoonste URL, matcht "we leiden in NL".themeConfig.navbar.items.<link rel="alternate"> per taal, op elke pagina, zonder config.Vertalingen leven in i18n/<locale>/ per site. Markdown-bestanden komen in i18n/de/docusaurus-plugin-content-docs/current/; UI-strings in code.json. Ontbreekt een vertaling, dan valt Docusaurus terug op de defaultLocale. Pagina's blijven dus altijd vindbaar; de fallback is geen 404.
npm run write-translations aan een CI-check toe zodat ontbrekende keys PR's breken, niet productie.
Configuratie hoort thuis in @conduction/docusaurus-preset. Eén i18n-blok daar, alle vijf à zes sites blijven in lockstep. Sjabloon-instellingen voor het preset:
// docusaurus.config.js i18n: { defaultLocale: 'nl', locales: ['nl', 'en', 'de', 'fr'], localeConfigs: { nl: { label: 'Nederlands', htmlLang: 'nl-NL' }, en: { label: 'English', htmlLang: 'en-GB' }, de: { label: 'Deutsch', htmlLang: 'de-DE' }, fr: { label: 'Français', htmlLang: 'fr-FR' }, }, }, trailingSlash: true,
Bron: Docusaurus i18n introduction · i18n tutorial
GitHub Pages bindt precies één custom domain aan elke repo, via het CNAME-bestand in de root. Wildcards (*.conduction.nl) worden expliciet afgeraden door GitHub vanwege domain-takeover-risico's. Eén Docusaurus-build kan dus geen meerdere subdomeinen serveren.
Dat zou een rommelige stapel repos kunnen worden. Daarom delen ze allemaal het @conduction/docusaurus-preset-package. Brand-tokens, navbar, footer, theme: alles komt uit één plek. Eén design-bug fixen in de preset, alle sites profiteren bij de volgende build.
De CMS-route via OpenCatalogi heeft die restrictie niet, daar serveert één Nextcloud-instance vanzelf alle eigen content. Maar dat geldt alleen waar we ook echt CMS-werk doen. Docs en marketing-content blijven static, want statisch is sneller, goedkoper en betrouwbaarder. GitHub Pages docs.
Maak een nieuwe repo onder ConductionNL/. Scaffold een Docusaurus-site met npx create-docusaurus@latest. Voeg static/CNAME toe met je subdomein: nieuw.conduction.nl.
Installeer @conduction/docusaurus-preset en zet hem in docusaurus.config.js. Brand, kleuren en typografie werken meteen. Voeg het A-record toe op de DNS, naar de GitHub Pages-IP's.
Het preset levert het i18n-blok mee (nl/en/de/fr). Vertaal eerst NL, daarna de rest in i18n/<locale>/. Run npm run write-translations -- --locale <x> om UI-strings te genereren.
Voeg .github/workflows/deploy.yml toe (publiceert naar gh-pages). Zet GitHub Pages in repo-settings op die branch. Apex-domein is al geverifieerd op org-niveau; DNS-checks werken meteen.