Fast, minimal static site generator that transforms markdown into searchable documentation sites. Built to run anywhere, even on a Raspberry Pi.
See the code
A lightweight static site generator for markdown-based knowledge bases and documentation.
Transform your markdown files into a searchable, professional documentation website with minimal resource overhead.
Features | Use Cases | Quick Start | Documentation | Deployment | License
MarkStack is built on a simple premise: Documentation should be accessible, robust, and permanent. It is designed to serve all walks of life, from the student building a second brain, to the Dungeon Master organizing a campaign, to the Enterprise Architect enforcing ISO compliance.
Built for the "Potato" & the Cloud I intentionally developed MarkStack on a single-core, 1GB RAM virtual machine. Why? Because if it runs there, it runs anywhere.
Radical Simplicity: Vanilla by Design Modern web development has become over-complicated. MarkStack rejects this. MarkStack is built with Vanilla JavaScript and a single file build process. There is no complex architecture to learn, no "magic" black-box frameworks, and no fragility.
Enterprise Grade: Compliance & Audit In professional environments, documentation is a legal record. MarkStack solves "documentation rot" by treating your docs as code.
The "Headless" Brain: From D&D to Ph.D. You don't need to be a systems engineer to have a powerful, globally accessible knowledge base. MarkStack turns GitHub (or any private Git repo) into your personal Content Management System.
OFF LINE MODE!
MarkStack adapts to a wide range of documentation needs. The table below outlines common scenarios where teams and individuals have successfully deployed MarkStack-powered sites.
| Use Case | Description | Example |
|---|---|---|
| Product Documentation | Public-facing documentation for software products, APIs, or services. Supports versioning through Git branches and provides professional presentation for end users. | SaaS product help center, open source project documentation |
| Internal Knowledge Base | Centralized repository for company policies, procedures, and institutional knowledge. Searchable and accessible to all team members without external dependencies. | IT runbooks, HR policies, operational procedures |
| Developer Handbook | Onboarding resource for new developers joining a team. Documents codebase architecture, development workflows, coding standards, and deployment processes. | Engineering team onboarding, contributor guidelines |
| API Reference | Technical reference documentation with code examples, endpoint descriptions, and authentication guides. Syntax highlighting supports 190+ languages. | REST API documentation, SDK reference |
| Personal Knowledge Base | Private or public collection of notes, tutorials, and reference material. Ideal for developers maintaining their own technical notes. | Learning notes, technology comparisons, how-to guides |
| Course Material | Educational content with structured navigation, code examples, and progressive learning paths. Task lists enable progress tracking for students. | Programming tutorials, certification study guides |
| Project Wiki | Lightweight alternative to traditional wiki software. Version-controlled through Git with full change history and collaborative editing through pull requests. | Team project documentation, research notes |
MarkStack uses standard GitHub-flavored Markdown for all content. This design decision enables a streamlined documentation workflow that integrates directly with your existing development process.
How it works:
.md file directly in the GitHub web interface or your local editorThis approach eliminates the need for separate documentation platforms or content management systems. Your documentation benefits from the same review process, branching strategy, and collaboration tools you already use for code. Pull requests enable documentation reviews, and merge conflicts are resolved using familiar Git workflows.
# Update documentation from the latest changes
git pull origin main
npm run build
# Documentation is now current
# Clone the repository
git clone https://github.com/KineticEnforcer/MarkStack.git
cd MarkStack
# Install dependencies
npm ci
# Build the site
npm run build
# Preview locally
npm run serve
Open http://localhost:3000 in your browser. Your documentation site is ready for content.
MarkStack includes comprehensive documentation covering all aspects of the system:
| Section | Description |
|---|---|
| Getting Started | Installation requirements, quickstart guide, project structure overview |
| Authoring Content | Markdown features, frontmatter schema, content organization patterns |
| Configuration | Site settings, homepage customization, metadata options |
| Customization | Theme variables, CSS customization, template modification |
| Build and Deploy | CLI commands, CI/CD integration, hosting platform setup |
| Architecture | Build pipeline internals, navigation generation, search indexing |
| Troubleshooting | Common issues with solutions, frequently asked questions |
markstack/
├── build.js # Build script (single-file static site generator)
├── editor-server.js # Visual editor server
├── editor.html # Visual editor interface
├── siteconfig.json # Site configuration
├── content/ # Markdown content directory
│ ├── _index.md # Homepage content (optional)
│ └── category/ # Category folders
│ ├── _index.md # Category landing page
│ └── article.md # Individual articles
├── templates/
│ └── base.html # HTML template with placeholders
├── static/ # Static assets copied to output
│ ├── css/ # Stylesheets
│ ├── js/ # Client-side JavaScript
│ └── svg/ # Logo and icons
└── dist/ # Generated output (excluded from version control)
Edit siteconfig.json to customize your site:
{
"siteTitle": "My Knowledge Base",
"headerTitle": "MyKB",
"siteSubtitle": "Documentation for everything",
"siteUrl": "https://docs.example.com",
"baseUrl": "",
"defaultDescription": "Knowledge base and documentation",
"showHero": true,
"copyrightText": "© 2026 Your Name"
}
| Property | Description |
|---|---|
siteTitle | Full site title used in browser tabs and metadata |
headerTitle | Shorter title displayed in the site header |
siteSubtitle | Tagline displayed on the homepage hero section |
siteUrl | Base URL for canonical links and Open Graph metadata |
baseUrl | Path prefix for all internal links (see table below) |
defaultDescription | Fallback description for pages without frontmatter |
showHero | Toggle homepage hero section visibility |
copyrightText | Footer copyright notice |
The baseUrl setting controls the path prefix for all internal links. Set it according to where your site is hosted:
| Hosting Location | baseUrl Value | Example URL |
|---|---|---|
| Root domain | "" (empty string) | https://docs.example.com/ |
| Subdirectory | "/docs" | https://example.com/docs/ |
| GitHub Pages (user site) | "" | https://username.github.io/ |
| GitHub Pages (project site) | "/repo-name" | https://username.github.io/repo-name/ |
For most deployments, leave baseUrl empty. Only set it when hosting in a subdirectory or on a GitHub Pages project site.
# Create a new article
echo "# My Article" > content/my-article.md
npm run build
# Create a category with a landing page
mkdir content/tutorials
cat > content/tutorials/_index.md << 'EOF'
---
title: Tutorials
description: Step-by-step guides for common tasks.
---
EOF
# Add an article to the category
echo "# Getting Started" > content/tutorials/getting-started.md
npm run build
Every page can include YAML frontmatter for metadata:
---
title: Page Title
description: Description for search engines and social sharing.
---
Content begins here...
Use GitHub-style alert syntax for callouts:
> [!NOTE]
> Supplementary information the reader should know.
> [!TIP]
> Helpful advice for better results.
> [!IMPORTANT]
> Critical information for successful outcomes.
> [!WARNING]
> Potential issues the reader should be aware of.
> [!CAUTION]
> Risk of negative consequences from specific actions.
Create diagrams using Mermaid syntax:
```mermaid
flowchart LR
A[Input] --> B[Process]
B --> C[Output]
```
| Command | Description |
|---|---|
npm run build | Generate static site to the dist/ directory |
npm run watch | Rebuild automatically when content files change |
npm run editor | Launch the visual markdown editor with live preview |
npm run serve | Start a local preview server on port 3000 |
npm run clean | Remove the dist/ directory |
Development workflow:
# Terminal 1: Watch for changes and rebuild
npm run watch
# Terminal 2: Serve the site locally
npm run serve
# Or use the visual editor for focused writing
npm run editor
MarkStack generates static HTML files that can be hosted on any web server or static hosting platform.
| Platform | Configuration |
|---|---|
| Cloudflare Pages | Connect repository. Build command: npm run build. Output directory: dist |
| GitHub Pages | Push contents of dist/ to a gh-pages branch or configure Actions workflow |
| Netlify | Connect repository. Build command: npm run build. Publish directory: dist |
| Vercel | Connect repository. Framework preset: Other. Output directory: dist |
| AWS S3 | Upload contents of dist/ to an S3 bucket configured for static hosting |
| Self-hosted | Copy contents of dist/ to your web server document root |
For automated deployments, see the CI/CD Integration documentation.
| Component | Implementation |
|---|---|
| Markdown Processing | markdown-it with anchor, footnote, and task list plugins |
| Frontmatter Parsing | gray-matter |
| Syntax Highlighting | highlight.js supporting 190+ languages |
| Diagram Rendering | Mermaid for flowcharts and diagrams |
| File Watching | chokidar for development mode |
| Frontend | Vanilla JavaScript with no framework dependencies |
| Typography | IBM Plex Sans and IBM Plex Mono |
No additional build tools, compilers, or system dependencies are required.
This release introduces the Visual Editor and significantly improves code quality across the codebase.
npm run editor)
Code Quality Refactoring
Editor Server (editor-server.js)
Editor Interface (editor.html)
This project is licensed under the GPL-3.0 license. See LICENSE for the full license text.
Built for developers who value simplicity and performance.
Fast, minimal static site generator that transforms markdown into searchable documentation sites. Built to run anywhere, even on a Raspberry Pi.
See the code
A lightweight static site generator for markdown-based knowledge bases and documentation.
Transform your markdown files into a searchable, professional documentation website with minimal resource overhead.
Features | Use Cases | Quick Start | Documentation | Deployment | License
MarkStack is built on a simple premise: Documentation should be accessible, robust, and permanent. It is designed to serve all walks of life, from the student building a second brain, to the Dungeon Master organizing a campaign, to the Enterprise Architect enforcing ISO compliance.
Built for the "Potato" & the Cloud I intentionally developed MarkStack on a single-core, 1GB RAM virtual machine. Why? Because if it runs there, it runs anywhere.
Radical Simplicity: Vanilla by Design Modern web development has become over-complicated. MarkStack rejects this. MarkStack is built with Vanilla JavaScript and a single file build process. There is no complex architecture to learn, no "magic" black-box frameworks, and no fragility.
Enterprise Grade: Compliance & Audit In professional environments, documentation is a legal record. MarkStack solves "documentation rot" by treating your docs as code.
The "Headless" Brain: From D&D to Ph.D. You don't need to be a systems engineer to have a powerful, globally accessible knowledge base. MarkStack turns GitHub (or any private Git repo) into your personal Content Management System.
OFF LINE MODE!
MarkStack adapts to a wide range of documentation needs. The table below outlines common scenarios where teams and individuals have successfully deployed MarkStack-powered sites.
| Use Case | Description | Example |
|---|---|---|
| Product Documentation | Public-facing documentation for software products, APIs, or services. Supports versioning through Git branches and provides professional presentation for end users. | SaaS product help center, open source project documentation |
| Internal Knowledge Base | Centralized repository for company policies, procedures, and institutional knowledge. Searchable and accessible to all team members without external dependencies. | IT runbooks, HR policies, operational procedures |
| Developer Handbook | Onboarding resource for new developers joining a team. Documents codebase architecture, development workflows, coding standards, and deployment processes. | Engineering team onboarding, contributor guidelines |
| API Reference | Technical reference documentation with code examples, endpoint descriptions, and authentication guides. Syntax highlighting supports 190+ languages. | REST API documentation, SDK reference |
| Personal Knowledge Base | Private or public collection of notes, tutorials, and reference material. Ideal for developers maintaining their own technical notes. | Learning notes, technology comparisons, how-to guides |
| Course Material | Educational content with structured navigation, code examples, and progressive learning paths. Task lists enable progress tracking for students. | Programming tutorials, certification study guides |
| Project Wiki | Lightweight alternative to traditional wiki software. Version-controlled through Git with full change history and collaborative editing through pull requests. | Team project documentation, research notes |
MarkStack uses standard GitHub-flavored Markdown for all content. This design decision enables a streamlined documentation workflow that integrates directly with your existing development process.
How it works:
.md file directly in the GitHub web interface or your local editorThis approach eliminates the need for separate documentation platforms or content management systems. Your documentation benefits from the same review process, branching strategy, and collaboration tools you already use for code. Pull requests enable documentation reviews, and merge conflicts are resolved using familiar Git workflows.
# Update documentation from the latest changes
git pull origin main
npm run build
# Documentation is now current
# Clone the repository
git clone https://github.com/KineticEnforcer/MarkStack.git
cd MarkStack
# Install dependencies
npm ci
# Build the site
npm run build
# Preview locally
npm run serve
Open http://localhost:3000 in your browser. Your documentation site is ready for content.
MarkStack includes comprehensive documentation covering all aspects of the system:
| Section | Description |
|---|---|
| Getting Started | Installation requirements, quickstart guide, project structure overview |
| Authoring Content | Markdown features, frontmatter schema, content organization patterns |
| Configuration | Site settings, homepage customization, metadata options |
| Customization | Theme variables, CSS customization, template modification |
| Build and Deploy | CLI commands, CI/CD integration, hosting platform setup |
| Architecture | Build pipeline internals, navigation generation, search indexing |
| Troubleshooting | Common issues with solutions, frequently asked questions |
markstack/
├── build.js # Build script (single-file static site generator)
├── editor-server.js # Visual editor server
├── editor.html # Visual editor interface
├── siteconfig.json # Site configuration
├── content/ # Markdown content directory
│ ├── _index.md # Homepage content (optional)
│ └── category/ # Category folders
│ ├── _index.md # Category landing page
│ └── article.md # Individual articles
├── templates/
│ └── base.html # HTML template with placeholders
├── static/ # Static assets copied to output
│ ├── css/ # Stylesheets
│ ├── js/ # Client-side JavaScript
│ └── svg/ # Logo and icons
└── dist/ # Generated output (excluded from version control)
Edit siteconfig.json to customize your site:
{
"siteTitle": "My Knowledge Base",
"headerTitle": "MyKB",
"siteSubtitle": "Documentation for everything",
"siteUrl": "https://docs.example.com",
"baseUrl": "",
"defaultDescription": "Knowledge base and documentation",
"showHero": true,
"copyrightText": "© 2026 Your Name"
}
| Property | Description |
|---|---|
siteTitle | Full site title used in browser tabs and metadata |
headerTitle | Shorter title displayed in the site header |
siteSubtitle | Tagline displayed on the homepage hero section |
siteUrl | Base URL for canonical links and Open Graph metadata |
baseUrl | Path prefix for all internal links (see table below) |
defaultDescription | Fallback description for pages without frontmatter |
showHero | Toggle homepage hero section visibility |
copyrightText | Footer copyright notice |
The baseUrl setting controls the path prefix for all internal links. Set it according to where your site is hosted:
| Hosting Location | baseUrl Value | Example URL |
|---|---|---|
| Root domain | "" (empty string) | https://docs.example.com/ |
| Subdirectory | "/docs" | https://example.com/docs/ |
| GitHub Pages (user site) | "" | https://username.github.io/ |
| GitHub Pages (project site) | "/repo-name" | https://username.github.io/repo-name/ |
For most deployments, leave baseUrl empty. Only set it when hosting in a subdirectory or on a GitHub Pages project site.
# Create a new article
echo "# My Article" > content/my-article.md
npm run build
# Create a category with a landing page
mkdir content/tutorials
cat > content/tutorials/_index.md << 'EOF'
---
title: Tutorials
description: Step-by-step guides for common tasks.
---
EOF
# Add an article to the category
echo "# Getting Started" > content/tutorials/getting-started.md
npm run build
Every page can include YAML frontmatter for metadata:
---
title: Page Title
description: Description for search engines and social sharing.
---
Content begins here...
Use GitHub-style alert syntax for callouts:
> [!NOTE]
> Supplementary information the reader should know.
> [!TIP]
> Helpful advice for better results.
> [!IMPORTANT]
> Critical information for successful outcomes.
> [!WARNING]
> Potential issues the reader should be aware of.
> [!CAUTION]
> Risk of negative consequences from specific actions.
Create diagrams using Mermaid syntax:
```mermaid
flowchart LR
A[Input] --> B[Process]
B --> C[Output]
```
| Command | Description |
|---|---|
npm run build | Generate static site to the dist/ directory |
npm run watch | Rebuild automatically when content files change |
npm run editor | Launch the visual markdown editor with live preview |
npm run serve | Start a local preview server on port 3000 |
npm run clean | Remove the dist/ directory |
Development workflow:
# Terminal 1: Watch for changes and rebuild
npm run watch
# Terminal 2: Serve the site locally
npm run serve
# Or use the visual editor for focused writing
npm run editor
MarkStack generates static HTML files that can be hosted on any web server or static hosting platform.
| Platform | Configuration |
|---|---|
| Cloudflare Pages | Connect repository. Build command: npm run build. Output directory: dist |
| GitHub Pages | Push contents of dist/ to a gh-pages branch or configure Actions workflow |
| Netlify | Connect repository. Build command: npm run build. Publish directory: dist |
| Vercel | Connect repository. Framework preset: Other. Output directory: dist |
| AWS S3 | Upload contents of dist/ to an S3 bucket configured for static hosting |
| Self-hosted | Copy contents of dist/ to your web server document root |
For automated deployments, see the CI/CD Integration documentation.
| Component | Implementation |
|---|---|
| Markdown Processing | markdown-it with anchor, footnote, and task list plugins |
| Frontmatter Parsing | gray-matter |
| Syntax Highlighting | highlight.js supporting 190+ languages |
| Diagram Rendering | Mermaid for flowcharts and diagrams |
| File Watching | chokidar for development mode |
| Frontend | Vanilla JavaScript with no framework dependencies |
| Typography | IBM Plex Sans and IBM Plex Mono |
No additional build tools, compilers, or system dependencies are required.
This release introduces the Visual Editor and significantly improves code quality across the codebase.
npm run editor)
Code Quality Refactoring
Editor Server (editor-server.js)
Editor Interface (editor.html)
This project is licensed under the GPL-3.0 license. See LICENSE for the full license text.
Built for developers who value simplicity and performance.