Migration Guide
This guide helps you migrate from other popular documentation systems to doc-system.
Quick Comparison#
| Feature | doc-system | Docusaurus | VuePress | MkDocs |
|---|---|---|---|---|
| Language | Node.js | Node.js | Node.js | Python |
| Markdown | ✅ | ✅ | ✅ | ✅ |
| Dark Mode | ✅ | ✅ | ✅ | ✅ |
| Search | Client-side | Algolia | Built-in | Built-in |
| Build Time | Fast | Medium | Medium | Fast |
| Size | ~5MB | ~200MB | ~50MB | ~10MB |
| Learning Curve | Easy | Medium | Easy | Easy |
Migrating from Docusaurus#
Overview#
Docusaurus and doc-system share similar philosophies but doc-system is more lightweight.
File Structure Mapping#
Docusaurus:
my-website/├── docs/├── blog/├── src/│ └── pages/├── static/├── docusaurus.config.js└── sidebars.jsdoc-system:
doc-system/├── docs/├── theme/├── scripts/└── config.jsonConfiguration Migration#
Docusaurus (docusaurus.config.js):
module.exports ={title:'My Site',tagline:'The tagline of my site',url:'https://mysite.com',baseUrl:'/',favicon:'img/favicon.ico',organizationName:'facebook',projectName:'docusaurus',themeConfig:{navbar:{title:'My Site',links:[{to:'docs/intro',label:'Docs',position:'left'}, ],},footer:{copyright:`Copyright © ${newDate().getFullYear()} My Project`,},},};doc-system (config.json):
{"title":"My Site","description":"The tagline of my site","baseUrl":"/","navbar":{"title":"My Site","links":[{"label":"Docs","to":"/docs/intro"}]},"footer":{"copyright":"Copyright © 2025 My Project"}}Sidebar Migration#
Docusaurus (sidebars.js):
module.exports ={docs:['intro','installation',{type:'category',label:'Guides',items:['guides/configuration','guides/deployment'],}, ],};doc-system (auto-generated from folder structure):
- No manual sidebar configuration needed!
- Just organize your
docs/folder:Plaintextdocs/├── intro.md├── installation.md└── guides/ ├── configuration.md └── deployment.md
Content Migration Steps#
Copy markdown files:
Bash# Copy all docscp -r docusaurus-site/docs/* doc-system/docs/Update frontmatter:
- Both use similar frontmatter
- Remove Docusaurus-specific fields:
Markdown---# Keep these:title:Page Titledescription:Page description# Remove these (Docusaurus-specific):id:page-idslug:/custom-urlsidebar_label:Short Namesidebar_position:1---Update MDX to Markdown:
- doc-system uses pure Markdown (not MDX)
- Convert React components to HTML/Markdown:
Docusaurus (MDX):
Mdximport Tabs from '@theme/Tabs';import TabItem from '@theme/TabItem';<Tabs> <TabItem value="js"label="JavaScript"> JavaScript code </TabItem></Tabs>doc-system (Markdown):
Markdown**JavaScript:**```javascript// JavaScript codePython:
Python# Python codePlaintextUpdate asset paths:
Markdown<!-- Docusaurus --><!-- doc-system -->Copy images:
Bashcp -r docusaurus-site/static/img/* doc-system/docs/images/
Features Not in doc-system#
Blog:
- Docusaurus has built-in blog support
- For doc-system,consider adding a separate blog platform
Versioning:
- Docusaurus supports multiple doc versions
- Use Git branches/tags for versioning in doc-system
i18n (Internationalization):
- Not built-in to doc-system
- Consider separate language branches
React Components:
- Docusaurus uses MDX
- Use HTML directly in Markdown instead
Deployment Migration#
Both support GitHub Pages similarly:
Docusaurus:
GIT_USER=<username>npm run deploydoc-system:
# Uses GitHub Actions (automated)git push origin masterMigrating from VuePress#
Overview#
VuePress and doc-system are both lightweight,but doc-system has no framework dependencies.
Configuration Migration#
VuePress (.vuepress/config.js):
module.exports ={title:'My Site',description:'My description',themeConfig:{nav:[{text:'Home',link:'/'},{text:'Guide',link:'/guide/'}, ],sidebar:['/','/guide/','/config/' ]}}doc-system (config.json):
{"title":"My Site","description":"My description","navbar":{"title":"My Site","links":[{"label":"Guide","to":"/docs/guide"}]}}Content Migration Steps#
Copy markdown files:
Bashcp -r vuepress-site/docs/* doc-system/docs/Update frontmatter:
Markdown---# Keep:title:Page Titledescription:Description# Remove (VuePress-specific):sidebar:autosidebarDepth:2---Remove Vue components:
VuePress:
Markdown<Badgetext="beta"type="warning"/>doc-system:
Markdown>**⚠️ Warning:** This feature is in betaUpdate custom containers:
VuePress:
Markdown:::tipThis is a tip:::doc-system:
Markdown>**💡 Tip:** This is a tip
File Structure Changes#
VuePress:
docs/├── .vuepress/│ ├── config.js│ ├── public/│ └── styles/└── README.mddoc-system:
.├── docs/│ └── intro.md├── theme/│ └── styles.css└── config.jsonMigrating from MkDocs#
Overview#
MkDocs is Python-based,doc-system is Node.js-based.
Prerequisites#
Install Node.js:
# If coming from Python/MkDocsnvm install 22nvm use 22Configuration Migration#
MkDocs (mkdocs.yml):
site_name:MyDocsnav:-Home:index.md-About:about.md-Guides:-Installation:guides/installation.md-Configuration:guides/configuration.mdtheme:name:materialdoc-system (config.json):
{"title":"My Docs","navbar":{"title":"My Docs","links":[{"label":"About","to":"/docs/about"}]}}Content Migration Steps#
Copy markdown files:
Bashcp -r mkdocs-site/docs/* doc-system/docs/Rename index.md:
Bashmv docs/index.md docs/intro.mdUpdate admonitions:
MkDocs:
Markdown!!! note This is a note!!! warning "Custom Title" This is a warningdoc-system:
Markdown>**📝 Note:** This is a note>**⚠️ Custom Title:** This is a warningUpdate code blocks:
- Both use fenced code blocks
- Syntax is the same:
Markdown```pythonprint("Hello")Plaintext
Deployment Changes#
MkDocs:
mkdocs gh-deploydoc-system:
# Setup GitHub Actions (one time)# Then just push:git push origin masterMigrating from GitBook#
Overview#
GitBook is a commercial platform,doc-system is open-source and self-hosted.
File Structure#
GitBook:
.├── README.md├── SUMMARY.md└── chapters/ ├── chapter1.md └── chapter2.mddoc-system:
.├── docs/│ ├── intro.md (was README.md)│ └── chapters/│ ├── chapter1.md│ └── chapter2.md├── theme/└── config.jsonMigration Steps#
Export from GitBook:
- Go to Settings → Export → GitHub
- Or manually copy markdown files
Restructure files:
Bashmkdir -p doc-system/docscp README.md doc-system/docs/intro.mdcp -r chapters/ doc-system/docs/chapters/Convert SUMMARY.md:
- GitBook uses
SUMMARY.mdfor navigation - doc-system auto-generates from folder structure
- No manual conversion needed!
- GitBook uses
Update internal links:
GitBook:
Markdown[Link](chapter1.md)doc-system:
Markdown[Link](chapters/chapter1)
Migrating from Read the Docs / Sphinx#
Overview#
Sphinx uses reStructuredText (rST),doc-system uses Markdown.
Convert rST to Markdown#
Use pandoc to convert:
# Install pandoc# Ubuntu/Debian:sudo apt-get install pandoc# Mac:brew install pandoc# Convert all .rst files to .mdfind docs -name "*.rst" -exec sh -c 'pandoc "${0}"-f rst -t markdown -o "${0%.rst}.md"'{}\;Manual Cleanup#
After conversion,manually fix:
Code blocks:
Rst.. code-block::python print("hello")Becomes:
Markdown```pythonprint("hello")PlaintextAdmonitions:
Rst.. note:: This is a noteBecomes:
Markdown>**📝 Note:** This is a noteCross-references:
Rst:ref:`installation`Becomes:
Markdown[Installation](installation)
General Migration Checklist#
Use this checklist for any migration:
- ◻️ Install Node.js 22.x
- ◻️ Clone doc-system repository
- ◻️ Copy markdown files to
docs/folder - ◻️ Copy images to
docs/images/folder - ◻️ Update
config.jsonwith site info - ◻️ Update frontmatter in markdown files
- ◻️ Convert proprietary syntax to standard Markdown
- ◻️ Update internal links (remove
.md,use relative paths) - ◻️ Test build:
npm run build - ◻️ Test dev server:
npm run dev - ◻️ Check all pages render correctly
- ◻️ Check all images load
- ◻️ Test search functionality
- ◻️ Test dark mode
- ◻️ Test mobile responsiveness
- ◻️ Setup GitHub Actions for deployment
- ◻️ Deploy and verify live site
Need Help?#
If you encounter issues during migration:
- Check the Troubleshooting Guide
- Search GitHub Issues
- Create a new issue with:
- Source system name and version
- Error messages
- Sample problematic content
Migration Tools#
Consider these tools to help with migration:
Content Conversion:
pandoc- Convert between markup formatsremark- Markdown processormarkdown-link-check- Verify links after migration
Automation:
# Example:Batch convert frontmatterfind docs -name "*.md" -exec sed -i 's/sidebar_position:/# sidebar_position:/g'{}\;# Example:Update image pathsfind docs -name "*.md" -exec sed -i 's|/img/|images/|g'{}\;# Example:Remove .md from linksfind docs -name "*.md" -exec sed -i 's/\(\[.*\]\(.*\)\.md\)/\1\)/g'{}\;Validation:
# After migration,check for issuesnpm run build 2>&1 | grep -i "warning\|error"# Test all pages loadnpm run serve# Then visit http://localhost:3000