Build with
Blog-Doc
A local Markdown CMS and static site generator built on Node.js. Write and manage content through the admin GUI, build a complete static site — and deploy it anywhere.
Support Callout: If you find Blog-Doc useful, please consider giving it a star. It would mean a lot and genuinely helps. Thank you for supporting the work of a solo developer whose goal is to make website creation easier and more accessible for everyone.
Stack
| Layer | Base path | Purpose |
|---|---|---|
Admin GUI |
/admin/* |
Browser-based content management interface |
Admin API |
/admin/api/* |
JSON REST API consumed by the GUI |
Live theme |
/* |
Serves the active theme dynamically on every request |
All three layers run on a single Node.js server using LiteNode and its built-in STE template engine. No authentication — Blog-Doc is designed for local use only.
| Package | Version | Purpose |
|---|---|---|
| litenode | ^4.7.0 |
HTTP server, routing, STE templating |
| marked | ^18.0.0 |
Markdown → HTML rendering |
| adm-zip | ^0.5.16 |
Theme install and export as ZIP |
No bundler. No build tooling. The admin UI is vanilla ES modules loaded directly by the browser.
| Requirement | Minimum |
|---|---|
| Node.js | 18 or later |
| npm | Any version bundled with Node 18+ |
| Browser | Any modern browser for the admin GUI |
What's included
No database
Plain Markdown files with YAML frontmatter. Plain JSON config. Everything on your filesystem.
Markdown editor
EasyMDE with live preview, self-hosted — no external dependencies.
Pages & posts
Separate content types. Nested page hierarchy up to 3 levels deep.
Menu editor
Define nested navigation menus for any location your theme declares.
Theme system
Install themes from ZIP or the marketplace. Swap the active theme at any time.
Live preview
The active theme renders your content on every request. No build step needed during development.
Static site build
Clean URLs, sitemap.xml, RSS, robots.txt, and a custom 404 page — all generated.
Taxonomy routes
Auto-generated category and tag pages driven by post frontmatter.
Search index
Auto-generated search.json served at /data/search.json in both dev and build.
REST API for everything
Every action is a JSON endpoint. The admin GUI is just a client of that API.
Quick start
-
Using npx
npx create-blog-doc my-blog -
Using npm init
npm init blog-doc my-blog -
Using clone and install
git clone https://github.com/lebcit/blog-doc.git cd blog-doc npm install -
Start the server
npm start # or for development with auto-restart: npm run dev -
Open your browser
Admin interface at
http://localhost:3000/admin
Live site preview athttp://localhost:3000 -
Build & deploy
Hit Build Site on the Dashboard. Download the
_site/ZIP and drop it on any static host or a plain VPS.
Choose one of the following methods — 1a, 1b or 1c — to get Blog-Doc: