2026-03-10-knowledge-base-migration-design
Knowledge Base Migration: ReadMe.io to Docusaurus
Context
Vianova's knowledge base (~280 markdown docs + 6 API recipes) is currently hosted on ReadMe.io at help.vianova.io. The system needs to be replaced due to: cost, poor editing experience for non-technical users, lack of real-time collaboration, no self-hosting/data ownership, limited customization, and no multilingual support.
Critical requirement: Translation into all EU languages (~24), with potential Arabic (RTL) and Japanese (CJK) support. English is the source of truth. Crowdin is already in use.
Architecture
- Docusaurus 3 — static site generator with first-class i18n support
- Crowdin — translation management (existing tooling)
- Git repo — single source of truth (English markdown)
- AWS S3 + CloudFront — hosting (existing Vianova infra)
- Algolia DocSearch — search
- GitHub Actions / existing CI — build & deploy pipeline
Content Flow
PM writes/edits markdown (with LLM assistance)
-> PR to git repo (English)
-> Crowdin CLI syncs source strings
-> Translators / MT fill in 24+ locales
-> Crowdin CLI pulls translated files back
-> CI builds all locales
-> aws s3 sync + CloudFront invalidation
What Stays Outside
- API reference stays at
api.vianova.dev/docs(linked from navbar)
Information Architecture
/ -> Landing page (custom hero)
/docs/ -> Knowledge Center (all guides)
/getting-started/
/analyzing-mobility-data/
/planning-streets/
/managing-policy/
/vip/
/streams/
/using-the-api/
/cityscope-support/
/data-producer/
/intelligent-platform/
/data-products/
/recipes/ -> API recipes (separate docs plugin instance)
/changelog/ -> Blog-powered changelog
/roadmap/ -> Custom page
Navbar: Docs | Recipes | API Reference (external) | Changelog | Roadmap | Language switcher
Visual Design
- Purple brand palette:
--ifm-color-primary: #6B0070, gradient to#220023 - Vianova logo in navbar
- Match current clean, professional look from
help.vianova.io - Swizzle minimal theme components (navbar, footer, sidebar)
- Admonitions replace ReadMe callout boxes
- Optional dark mode toggle
Content Migration (One-Time)
Docs (~280 files)
- Strip ReadMe-specific frontmatter (
recipe:,deprecated:,hidden:,metadata:) - Convert
<Image>components to standard markdown images - Convert
_order.yamlfiles tosidebars.js+_category_.jsonposition metadata - Preserve folder hierarchy as-is (maps directly to Docusaurus sidebar)
Recipes (6 files)
- Convert
<!-- python@X-Y -->line references to Docusaurus code block line highlighting ({X-Y}) - Convert
recipe:frontmatter to standard Docusaurus frontmatter with tags - Set up as a separate docs plugin instance at
/recipes
API-Referenz
- Delete
reference/directory contents (Hawkeye specs) - Add external navbar link to
api.vianova.dev/docs
Translation Pipeline
Setup
- Configure
docusaurus.config.jswith all target locales - Configure Crowdin project with
crowdin.ymlmapping Docusaurus i18n structure - RTL support enabled for Arabic locale
Ongoing Workflow
- Author writes/edits English docs, merges PR
- CI runs
docusaurus write-translationsto extract strings - Crowdin CLI uploads source files
- Translation happens in Crowdin (MT + optional human review)
- Crowdin CLI downloads translated files into
i18n/<locale>/ - CI builds and deploys all locales
Hosting & Deployment
- S3 bucket — stores built static files
- CloudFront distribution — CDN, SSL, custom domain (
help.vianova.io) - CI pipeline — on merge to main: build all locales,
aws s3 sync, CloudFront cache invalidation - Preview deploys — on PR: build and deploy to preview URL for review
Editing Workflow for PMs
- PMs write/edit markdown with LLM assistance (Claude, ChatGPT)
- Changes submitted as PRs via GitHub web UI or git
- Preview deploy on PR for visual review
- Merge triggers production deploy
Success Criteria
- All existing docs and recipes migrated and accessible
- Translation pipeline working end-to-end with Crowdin
- Site live at
help.vianova.ioon AWS infra - Search functional via Algolia
- PMs can edit and preview without developer assistance
- Visual design matches Vianova branding
Updated about 18 hours ago
