Skip to main content

Self-contained unified documentation engine with Material theme.

Project description

DocsForge

One package. One command. Beautiful docs.

PyPI Docs License

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 install gets you the engine + theme + recommended plugins.
  • One config file (docsforge.yml) with no boilerplate plugins: list.
  • Backward compatible — existing mkdocs.yml files 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:

  1. docsforge.yml / docsforge.yamlpreferred
  2. properdocs.yml / properdocs.yaml
  3. mkdocs.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:

  1. Keep the plugin system alive. Material's plugins (blog, tags, privacy, social, search) are powerful. We auto-register them instead of rewriting them.
  2. ProperDocs dual entrypoints. ProperDocs already supports both mkdocs.* and properdocs.* entrypoints, so Material works without code changes.
  3. 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

Star History Chart

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docsforge-10.2.1.tar.gz (6.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

docsforge-10.2.1-py3-none-any.whl (6.4 MB view details)

Uploaded Python 3

File details

Details for the file docsforge-10.2.1.tar.gz.

File metadata

  • Download URL: docsforge-10.2.1.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

Hashes for docsforge-10.2.1.tar.gz
Algorithm Hash digest
SHA256 be44b83179e8a86d03361bb5983e1e0198219558c836b556f3ac92f57a57edc2
MD5 51b161f6d8b9af85136642d20aad5abd
BLAKE2b-256 3e2dd041d4e8d574a1e64ad26e66b4be9fe210aded2af3429d34f96e5317697c

See more details on using hashes here.

Provenance

The following attestation bundles were made for docsforge-10.2.1.tar.gz:

Publisher: publish.yml on QQSHI13/docsforge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file docsforge-10.2.1-py3-none-any.whl.

File metadata

  • Download URL: docsforge-10.2.1-py3-none-any.whl
  • Upload date:
  • Size: 6.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for docsforge-10.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8fd370f17fdc2aac5a7c5749060c12a7948336669b1fa4ba118acb9dc24a93f8
MD5 b34775f2633d53e87c8034af5a8bc463
BLAKE2b-256 f1635720d6e14b35c41b9523b19759ee0d82ce0fd29df7d70c289d75af147977

See more details on using hashes here.

Provenance

The following attestation bundles were made for docsforge-10.2.1-py3-none-any.whl:

Publisher: publish.yml on QQSHI13/docsforge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page