Docmach is a Markdown-powered static site generator designed for modern blogs and project documentation. It integrates the simplicity of Markdown and Tailwind CSS to generate sites with minimal effort.
- Markdown Compilation – Write Markdown with full HTML support and syntax highlighting
- Custom Templating System – Use fragments, functions, and wrappers via
<docmach>tags - Tailwind CSS Integration – Built-in Tailwind CSS compiler for beautiful, responsive designs
- Live Reload & Watch Mode – Instant preview with WebSocket-based hot reload
- Incremental Builds – Smart caching and dependency tracking for fast rebuilds
- Build Manifest – Auto-generated JSON manifest with page metadata and tag information
- Programmatic API – Use Docmach as a library for dynamic content generation
- Simple Configuration – Minimal setup required to get started
# Install locally
npm i docmach
npx docmach
# Or install globally
npm i docmach -g
docmachAdd the following to your package.json file:
"docmach": {
"docs-directory": "./docs",
"build-directory": "./docmach",
"assets-folder": "./assets"
}| Option | Description | Default |
|---|---|---|
| docs-directory | Directory containing your Markdown files | Root directory |
| build-directory | Output directory for the generated site | ./docmach |
| assets-folder | Directory with assets to be copied to output | None |
Docmach parses all .md files in your input folder, extracting and processing Markdown and HTML content. It uses special Docmach tag to apply templates and functions.
Docmach tag work similarly to HTML tags:
<docmach
type="fragment"
file="template.html"
params="title=My Page; author=JohnDoe"
/>
<!-- Yes this works, passed as function parameter -->
<docmach
type="function"
file="author-bio.js"
params="title=My Page; author={name: JohnDoe, age: 24, date: 20th March 2015}"
/><!-- template.html -->
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h2>{{ author }}</h2>
</body>
</html>// in author-bio.js
export default function (title, author) {
return `
<div>
<h1>by ${title}</h1>
<h3>by ${author.name}</h3>
<p>Aged: ${author.age}</p>
<p>On: ${author.date}</p>
</div>
`;
}
// such functions should do it works fast please.| Attribute | Type | Description |
|---|---|---|
| type | string | Template type: "fragment", "function", or "wrapper" |
| file | string | Location of template code: .html for fragments or .js for functions |
| params | string | Parameters passed to templates (supports objects: key: {nested: value}) |
| replacement | string | (Wrapper only) Placeholder name where content will be inserted |
Wrappers allow you to wrap Markdown content with custom HTML:
<docmach
type="wrapper"
file="layout.html"
replacement="content"
params="title: My Page"
>
# This Markdown content will be wrapped Your content here gets inserted into
the `{{ content }}` placeholder.
</docmach>docmach # Start dev server with live reload
docmach build # Build for production
docmach print # Visualize all pages in your siteDocmach automatically generates docmach-manifest.json during builds, containing:
- All page paths and URLs
- Docmach tags used in each page
- Template dependencies and parameters
Perfect for building navigation, sitemaps, or analyzing your site structure.
- Live Reload That Actually Works 🔄 – See changes instantly
- CLI That Doesn't Get in Your Way 🛠️ – Simple, intuitive commands
- Developer Experience Focused 🌟 – Built with modern web development workflows in mind
- Flexible & Extensible 🧩 – Adapt to your project needs without complexity
See ROADMAP.md for planned features and future direction.
Upcoming features:
- Plugin system for extensibility
- Frontmatter support (YAML/TOML)
- Collections and taxonomies
- i18n support
- CMS integrations
We welcome contributions! See CONTRIBUTING.md for guidelines.
Quick start:
git clone https://github.com/CodeDynasty-dev/Docmach.git
cd Docmach
npm install
npm run watchApache License 2.0