Drop-in replacement for MkDocs and Material for MkDocs. Self-contained documentation engine with vendored theme, plugins, KaTeX math, offline search, and zero external dependencies.
Project description
DocsForge
The drop-in replacement for MkDocs + Material for MkDocs. One package. One command. Beautiful docs. Zero CDN calls. โ ๏ธ Development Mode: DocsForge is under active development. Expect breaking changes and large updates until v11.0.0.
DocsForge is a self-contained, actively-maintained documentation engine. If you use MkDocs, Material for MkDocs, or are looking for a modern alternative, you're in the right place.
๐ Documentation | ๐ฆ PyPI | ๐ GitHub | ๐ Migrate from MkDocs
Why DocsForge?
| MkDocs + Material | DocsForge | |
|---|---|---|
| Maintenance | โ ๏ธ MkDocs is unmaintained; Material is maintenance-only | โ Actively developed |
| Installation | pip install mkdocs-material + 15+ plugins separately |
pip install docsforge โ everything included |
| CDN calls | Google Fonts, KaTeX, Mermaid loaded from CDN on every build | ๐ Zero external network calls โ everything vendored |
| Math rendering | Requires internet or manual KaTeX setup | โ KaTeX vendored, works offline instantly |
| Diagrams | Mermaid loaded from CDN | โ Mermaid vendored |
| Icons | Downloaded at build time | โ 14,000+ icons included |
| Privacy | External font/icon requests | โ All assets self-hosted |
| Search | Plugin + external JS | โ Lunr.js built-in, works offline |
| PWA / Offline | Not included | โ Service worker + offline cache built-in |
DocsForge is everything MkDocs + Material does, in one package, with zero external dependencies.
Migrating from MkDocs
One command converts your project:
# In your existing MkDocs project directory
pip install docsforge
docsforge migrate # converts mkdocs.yml โ docsforge.yml
docsforge build # builds your site
docsforge serve # live preview
docsforge migrate reads your mkdocs.yml, converts it to docsforge.yml, and reports which plugins are supported and which need attention.
docsforge migrate --dry-run # preview changes without writing
docsforge migrate --force # overwrite existing docsforge.yml
What gets migrated automatically:
- Site configuration (name, URL, repo, nav)
- Material theme settings
- Supported plugins (search, tags, blog, info, meta, minify, privacy, social, offline, etc.)
- Markdown extensions
- Custom CSS/JS
DocsForge auto-detects legacy configs: If you run docsforge build in a directory with mkdocs.yml but no docsforge.yml, it will suggest running docsforge migrate.
What Makes DocsForge Different
๐ Zero External Network Calls
Every asset is vendored: KaTeX for math, Mermaid for diagrams, all fonts and icons, the Material theme itself. Your docs build in an air-gapped environment.
๐ฆ One Package = Everything
No pip install mkdocs-material + pip install mkdocs-awesome-pages-plugin + pip install .... Just:
pip install docsforge
You get:
- โก Engine โ ProperDocs fork, vendored and maintained
- ๐จ Theme โ Material for MkDocs, fully included
- ๐ Plugins โ 7 built-in: search, tags, blog, info, meta, minify, privacy, social, offline, optimize, typeset
- ๐ Markdown โ 31 extensions pre-configured (pymdownx + python-markdown)
- โ Math โ KaTeX vendored (
$$...$$works out of the box) - ๐๏ธ Highlighting โ Pygments at build time
- ๐ Diagrams โ TikZ auto-compiled to SVG, Mermaid built-in
- ๐ Search โ Lunr.js client-side full-text search
- ๐ Dark mode โ Light/dark toggle with auto system detection
- ๐ฑ Offline โ Service worker caches all assets for PWA support
- ๐ค Fonts โ Self-hosted (privacy plugin downloads Google Fonts locally)
๐ Production-Ready Defaults
Sensible defaults for everything. No config file needed for basic sites. Add a docsforge.yml when you need customization.
Installation
pip install docsforge
Requires Python 3.10+.
Quick Start
# Create a new project
docsforge new my-docs
cd my-docs
# Start the dev server
docsforge serve
# โ http://localhost:8000
# Build for production
docsforge build
# โ site/
Config File
DocsForge looks for config in this priority:
docsforge.yml/docsforge.yamlโ preferredmkdocs.yml/mkdocs.yamlโ legacy fallback (shows migration hint)
Minimal docsforge.yml
site_name: My Documentation
site_url: https://example.com/
That's it. All plugins, extensions, and theme settings use sensible defaults.
Full example
site_name: My Docs
site_url: https://example.com/
site_author: Your Name
repo_url: https://github.com/username/repo
nav:
- Home: index.md
- Getting started: getting-started.md
- Blog:
- blog/index.md
theme:
name: material
palette:
- media: "(prefers-color-scheme: light)"
scheme: default
primary: indigo
accent: indigo
toggle:
icon: material/brightness-7
name: Switch to dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
primary: indigo
accent: indigo
toggle:
icon: material/brightness-4
name: Switch to light mode
CLI Reference
| Command | Description |
|---|---|
docsforge new <name> |
Scaffold a new project |
docsforge serve |
Live-reload dev server |
docsforge build |
Static site build |
docsforge migrate |
Convert mkdocs.yml โ docsforge.yml |
docsforge gh-deploy |
Deploy to GitHub Pages |
PWA / Offline Support
Every built site includes a service worker that:
- Caches HTML pages (network-first, updates in background)
- Caches assets (CSS, JS, fonts, images โ cache-first for speed)
- Versioned updates โ Each build generates a unique SW hash, forcing browser refresh
- Auto cleanup โ Old caches purged when new version activates
No configuration needed. Works offline after the first visit.
Keywords
DocsForge is the best alternative to: MkDocs, Material for MkDocs, Docusaurus, GitBook, ReadTheDocs, VuePress, Hugo documentation.
Use DocsForge for: Python project documentation, API docs, technical documentation, knowledge bases, blogs, product docs, internal wikis, open-source project sites, static site generation with Markdown.
Features: static site generator, markdown documentation, material design theme, dark mode, offline support, PWA, KaTeX math, Mermaid diagrams, TikZ diagrams, built-in search, tags, blogging, privacy-focused, no CDN, self-hosted fonts, vendored dependencies, zero-config documentation.
Changelog
See full changelog in the documentation.
Recent highlights:
- v10.4.1 โ Mermaid auto-config, search plugin cleanup
- v10.3.3 โ Versioned service worker with auto cache cleanup
- v10.3.0 โ TikZ diagrams, blog plugin, theme playground
- v10.1.0 โ Zero-config Markdown, KaTeX math, dark mode toggle
License
LGPL v3-or-later
DocsForge is built by QQ (Cyrus) and Nova โ๏ธ โ because documentation tools should just work.
Star History
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file docsforge-10.8.0a2.tar.gz.
File metadata
- Download URL: docsforge-10.8.0a2.tar.gz
- Upload date:
- Size: 5.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2f75255914aa00ba29bcb17eabf4dcbfdb1b44156b9484fa15d298f697a26bc
|
|
| MD5 |
6b21d95153c37c8e108108ab4160439b
|
|
| BLAKE2b-256 |
1bfc76b950f7dc6e4bf84ec6ffc5c34cb67e5bd11dc8f31a05a7e7c12e93b227
|
Provenance
The following attestation bundles were made for docsforge-10.8.0a2.tar.gz:
Publisher:
publish.yml on QQSHI13/docsforge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
docsforge-10.8.0a2.tar.gz -
Subject digest:
e2f75255914aa00ba29bcb17eabf4dcbfdb1b44156b9484fa15d298f697a26bc - Sigstore transparency entry: 1707933473
- Sigstore integration time:
-
Permalink:
QQSHI13/docsforge@418190b2ed6b4b965dca8db8414ba41803ea7eb1 -
Branch / Tag:
refs/tags/v10.8.0a2 - Owner: https://github.com/QQSHI13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@418190b2ed6b4b965dca8db8414ba41803ea7eb1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file docsforge-10.8.0a2-py3-none-any.whl.
File metadata
- Download URL: docsforge-10.8.0a2-py3-none-any.whl
- Upload date:
- Size: 10.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2615d6fafb465c81620b47d64d046f6b6669cf20293891cf187ca0c7ddddca4f
|
|
| MD5 |
74fb1a4ee3359bb6b893027b69aac648
|
|
| BLAKE2b-256 |
e4af9d39350551d8b2f812175d5dc885cc8b1d7ce5ad31a69d9525bb1e45a710
|
Provenance
The following attestation bundles were made for docsforge-10.8.0a2-py3-none-any.whl:
Publisher:
publish.yml on QQSHI13/docsforge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
docsforge-10.8.0a2-py3-none-any.whl -
Subject digest:
2615d6fafb465c81620b47d64d046f6b6669cf20293891cf187ca0c7ddddca4f - Sigstore transparency entry: 1707933480
- Sigstore integration time:
-
Permalink:
QQSHI13/docsforge@418190b2ed6b4b965dca8db8414ba41803ea7eb1 -
Branch / Tag:
refs/tags/v10.8.0a2 - Owner: https://github.com/QQSHI13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@418190b2ed6b4b965dca8db8414ba41803ea7eb1 -
Trigger Event:
release
-
Statement type: