Self-contained unified documentation engine with Material theme.
Project description
DocsForge
One package. One command. Beautiful docs.
DocsForge unifies the ProperDocs documentation engine and the Material for MkDocs theme into a single, installable package. You write content. DocsForge handles the engine, the theme, and the plugins.
📖 Documentation | 📦 PyPI | 🐙 GitHub
Vision
MkDocs is effectively unmaintained. Material for MkDocs is in maintenance mode. ProperDocs is the actively maintained fork of MkDocs that keeps the ecosystem alive.
DocsForge makes the successor ecosystem effortless:
- One
pip installgets you the engine + theme + recommended plugins. - One config file (
docsforge.yml) with no boilerplateplugins:list. - Backward compatible — existing
mkdocs.ymlfiles work unchanged. - Plugin system stays alive — we just auto-register Material plugins so you never write a
plugins:section.
Installation
pip install docsforge
That's it. ProperDocs, Material for MkDocs, and common plugins are installed together.
Quick Start
1. Create a new site
docsforge new my-docs
cd my-docs
This scaffolds:
my-docs/
├── docsforge.yml # Config with Material theme pre-selected
└── docs/
└── index.md # Starter page
2. Preview locally
docsforge serve
Material plugins (search, tags, etc.) are auto-registered — no plugins: list needed.
3. Build for production
docsforge build
4. Deploy to GitHub Pages
docsforge gh-deploy
Config File
DocsForge looks for config in this priority:
docsforge.yml/docsforge.yaml← preferredproperdocs.yml/properdocs.yamlmkdocs.yml/mkdocs.yaml← legacy fallback
Minimal docsforge.yml
site_name: My Documentation
site_url: https://example.com/
repo_url: https://github.com/username/repo
# Theme defaults to "material" — you can omit this entirely.
theme:
name: material
# No plugins: section needed — search, tags, blog, privacy, social
# are auto-registered based on what you have installed.
Advanced — override auto-plugins
If you define plugins: yourself, DocsForge merges rather than overwrites:
site_name: My Docs
plugins:
search:
lang: en
tags:
tags_file: tags.md
# blog, privacy, social are still auto-registered if available
CLI Reference
| Command | Description |
|---|---|
docsforge new <name> |
Scaffold a new project |
docsforge serve |
Live-reload dev server |
docsforge build |
Static site build |
docsforge gh-deploy |
Deploy to GitHub Pages |
All commands accept -f / --config-file to override config discovery.
Architecture
docsforge/ # Unified package
├── __init__.py
├── cli.py # `docsforge` command (wraps properdocs)
├── config.py # Unified config loader
├── plugins/
│ └── auto_register.py # Pre-loads Material plugins
├── engine/ # ProperDocs core (git subtree)
│ └── (properdocs source)
└── themes/ # Material for MkDocs (git subtree)
└── (mkdocs-material source)
Key decisions:
- Keep the plugin system alive. Material's plugins (blog, tags, privacy, social, search) are powerful. We auto-register them instead of rewriting them.
- ProperDocs dual entrypoints. ProperDocs already supports both
mkdocs.*andproperdocs.*entrypoints, so Material works without code changes. - Unified CLI, not a fork. We wrap ProperDocs commands; we don't fork the engine.
See ARCHITECTURE.md for the full design record.
License
GPL-3.0-or-later — same as ProperDocs.
DocsForge is a repackaging project, not a fork. It keeps the MkDocs/ProperDocs ecosystem moving forward while the upstreams navigate their maintenance transitions.
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.2.12.tar.gz.
File metadata
- Download URL: docsforge-10.2.12.tar.gz
- Upload date:
- Size: 6.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
057f5e34afd157de314d56d4c2c717e4586d67e1feac3e1e40ace9edc82c5cbc
|
|
| MD5 |
56aaa993e54b6c661633151f2dac7ac6
|
|
| BLAKE2b-256 |
081035eafaa65337db8642448d77c5f1bbd68573f06b12db38ffb1e6ccd4592c
|
Provenance
The following attestation bundles were made for docsforge-10.2.12.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.2.12.tar.gz -
Subject digest:
057f5e34afd157de314d56d4c2c717e4586d67e1feac3e1e40ace9edc82c5cbc - Sigstore transparency entry: 1523721397
- Sigstore integration time:
-
Permalink:
QQSHI13/docsforge@55be7fa60e78c5bdd7ce4626ac5376c02dd619a7 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/QQSHI13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@55be7fa60e78c5bdd7ce4626ac5376c02dd619a7 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file docsforge-10.2.12-py3-none-any.whl.
File metadata
- Download URL: docsforge-10.2.12-py3-none-any.whl
- Upload date:
- Size: 15.3 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 |
fab89f1957e0041f6db31c53f47619a241cf0c29a8adf705b5df84b98936850a
|
|
| MD5 |
7e9fc3bded56b4a9179bb792a99d96ee
|
|
| BLAKE2b-256 |
f5f7d9ce28bed122061430f0e04424fcd5730a8288b90aac3943079572496419
|
Provenance
The following attestation bundles were made for docsforge-10.2.12-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.2.12-py3-none-any.whl -
Subject digest:
fab89f1957e0041f6db31c53f47619a241cf0c29a8adf705b5df84b98936850a - Sigstore transparency entry: 1523721413
- Sigstore integration time:
-
Permalink:
QQSHI13/docsforge@55be7fa60e78c5bdd7ce4626ac5376c02dd619a7 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/QQSHI13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@55be7fa60e78c5bdd7ce4626ac5376c02dd619a7 -
Trigger Event:
workflow_dispatch
-
Statement type: