The Docusaurus 3 site for conduction.nl. Built on @conduction/docusaurus-preset for brand defaults; site-specific config lives in docusaurus.config.js.
It also serves the connext.conduction.nl and commonground.conduction.nl vanity entry points (a Cloudflare worker — configured in the dashboard, not in this repo — 301-redirects to the /connext and /commonground paths on this site, with locale awareness via Accept-Language).
Vanity-domain redirect target: the worker must redirect to
https://www.conduction.nl/connext/— with thewww.and the trailing slash. The site is built withurl: https://www.conduction.nl(matchingstatic/CNAME) andtrailingSlash: true. Targeting the bare apex (conduction.nl) or the slash-less path (/connext) stacks extra GitHub Pages 301s on every request and, if the worker route also matcheswww, can produce a redirect loop. If you see a redirect loop onconnext.conduction.nl, also check Cloudflare's SSL/TLS mode is Full (not "Flexible") — Flexible + GitHub Pages "Enforce HTTPS" is the classic infinite HTTP↔HTTPS loop.
npm install --legacy-peer-deps
npm start
# → http://localhost:3000/npm run buildOutput lands in build/. That folder is what gets deployed to GitHub Pages by .github/workflows/documentation.yml, which calls the centralized ConductionNL/.github documentation workflow.
Once @conduction/docusaurus-plugin-opencatalogi is built, content can be pulled from the local Nextcloud OpenCatalogi register at build time:
# Start the local Nextcloud (Conduction's docker-compose dev environment)
cd ~/nextcloud-docker-dev && docker compose up -d
# Build the site against localhost:8080
OPENCATALOGI_URL=http://localhost:8080/index.php/apps/openregister/api npm run buildThe plugin is wired into docusaurus.config.js but commented out until the package exists.
GitHub Pages, served from the build/ output via .github/workflows/documentation.yml. The static/CNAME file claims www.conduction.nl.
conduction-website/
academy/ — Blog/academy posts (routeBasePath: /academy)
blog/ — Legacy blog redirects
i18n/ — Translation overrides per locale (en/nl)
data/
app-downloads.json — Live store/download numbers (refreshed by GitHub Actions)
src/
css/site.css — Site-specific CSS, appended to brand.css
data/apps-catalog.js — Hand-curated app metadata + downloads merge
pages/index.mdx — Conduction landing
pages/connext.mdx — ConNext vanity landing
pages/commonground.mdx — Common Ground vanity landing
pages/apps/ — App catalogue
pages/solutions/ — Solution pages
pages/partners/ — Partner pages
theme/Navbar/Logo — Pathname-based brand switch
static/ — Static assets (favicon, images, CNAME)
docusaurus.config.js — Site config (uses createConfig from preset)
Two locales, English default:
/→ English (canonical)/nl/→ Nederlands
Markdown overrides per locale live in i18n/<locale>/docusaurus-plugin-content-pages/. UI strings come from i18n/<locale>/code.json (generated by npm run write-translations).
This repository was migrated from the legacy Docusaurus v2.4.3 site in 2026 by extracting the new preset-based build from design-system/sites/www/.