██████╗ ██████╗ ██████╗██████╗ ██████╗ ██╗ ██╗
██╔══██╗██╔═══██╗██╔════╝██╔══██╗██╔═══██╗╚██╗██╔╝
██║ ██║██║ ██║██║ ██████╔╝██║ ██║ ╚███╔╝
██║ ██║██║ ██║██║ ██╔══██╗██║ ██║ ██╔██╗
██████╔╝╚██████╔╝╚██████╗██████╔╝╚██████╔╝██╔╝ ██╗
╚═════╝ ╚═════╝ ╚═════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝
DocBox is a JavaDoc-style documentation generator for BoxLang and CFML codebases, featuring modern HTML themes, JSON output, and UML diagram generation.
📖 Documentation | 💻 GitHub | 💬 Ortus Community
- 🎨 Modern HTML Documentation - Two professional themes with dark mode support
- 🔍 Real-time Search - Live method filtering with keyboard navigation
- 📋 Multiple Output Formats - HTML, JSON, and XMI/UML diagrams
- 🦤 BoxLang Native - First-class BoxLang runtime and CLI support
- 📝 JavaDoc Compatible - Standard JavaDoc comment block parsing
- ⚡ Alpine.js SPA - Fast, modern single-page application interface
- 🌓 Dark Mode - System preference detection with manual toggle
Install DocBox as a BoxLang module for CLI access:
# CommandBox web runtimes
box install bx-docbox
# BoxLang OS runtime
install-bx-module bx-docboxGenerate documentation from the command line:
boxlang module:docbox --source=/path/to/code \
--mapping=myapp \
--output-dir=/docs \
--project-title="My API"Install as a development dependency:
box install docbox --saveDevUse programmatically in your build scripts:
new docbox.DocBox()
.addStrategy( "HTML", {
projectTitle : "My API Docs",
outputDir : expandPath( "./docs" ),
theme : "default" // or "frames"
})
.generate(
source = expandPath( "./models" ),
mapping = "models",
excludes = "(tests|build)"
);| Method | Command | Use Case |
|---|---|---|
| BoxLang Module | box install bx-docbox |
CLI usage, BoxLang projects |
| CFML Library | box install docbox --saveDev |
Programmatic use, build scripts |
| CommandBox Module | box install commandbox-docbox |
Task runner, automated builds |
- ⚡ Client-side routing and dynamic filtering
- 🌓 Dark mode with localStorage persistence
- 🔍 Real-time method search
- 📑 Method tabs (All/Public/Private/Static/Abstract)
- 💜 Modern purple gradient design
- 🗂️ Classic frameset layout
- 📚 jstree navigation sidebar
- 🎯 Bootstrap 5 styling
- 📱 Mobile-friendly design
- BoxLang 1.0+ or CFML Engine (Lucee 5+, Adobe ColdFusion 2023+)
- CommandBox (for installation and CLI usage)
| Format | Description | Use Case |
|---|---|---|
| HTML | Modern browsable documentation | Developer reference, public API docs |
| JSON | Machine-readable structured data | Integration with other tools, custom processing |
| XMI | UML diagram generation | Architecture diagrams, visual documentation |
# Basic usage
boxlang module:docbox --source=/src --mapping=app --output-dir=/docs
# Multiple source mappings
boxlang module:docbox --mappings:v1=/src/v1 --mappings:v2=/src/v2 -o=/docs
# With theme selection
boxlang module:docbox --source=/src --mapping=app --theme=frames -o=/docs
# Show help
boxlang module:docbox --helpInstall the commandbox-docbox module:
box install commandbox-docboxGenerate documentation using CommandBox commands:
# Generate HTML docs
box docbox generate source=/path/to/code mapping=myapp outputDir=/docs
# Generate with excludes
box docbox generate source=/src mapping=app outputDir=/docs excludes=(tests|build)
# Generate JSON docs
box docbox generate source=/src mapping=app outputDir=/docs strategy=JSON
# Show help
box docbox generate helpUse in a task.cfc for automated builds:
component {
function run() {
command( "docbox generate" )
.params(
source = getCWD() & "/models",
mapping = "models",
outputDir = getCWD() & "/docs",
excludes = "tests"
)
.run();
}
}Complete documentation is available at docbox.ortusbooks.com
- commandbox-docbox - CommandBox module for task runner integration
- bx-docbox - BoxLang native module with CLI
Found a bug or have an idea? Report it on our Jira issue tracker
- 💬 CFML Slack - #box-products channel
- 🗨️ Ortus Community Forums
- 📧 Professional Support
Thanks to Mark Mandel for the original project that inspired DocBox.
Apache License, Version 2.0
"I am the way, and the truth, and the life; no one comes to the Father, but by me (JESUS)" - John 14:6