A minimal, open-source static blog engine built with vanilla JavaScript and web components. No frameworks, no dependencies beyond a Markdown parser.
A live demo can be accessed at https://www.georgeserbanescu.com
- 📝 Markdown-based articles with metadata
- 🎨 Clean, minimal design with dark/light mode toggle
- 🚀 Static site generation for fast loading
- 📱 Responsive design
- 🔧 Web components for reusable UI (navbar, footer, article list)
- ✅ Published/draft article support
- 🌓 Theme toggle with localStorage persistence
- 🎯 SEO-friendly URLs (
/articles/{slug}/)
Fork the current repo. After run:
npm install
npm start.
├── articles/ # Markdown articles
│ ├── *.md # Article markdown files
│ ├── articles.json # Generated list of articles
│ ├── list.html # Articles listing page template
│ └── index.html # Article display template (for dev)
├── assets/ # Static assets
│ └── images/ # Images and favicons
├── components/ # Web components
│ ├── navbar-component.js
│ ├── footer-component.js
│ └── article-list-component.js
├── public/ # Generated static site (gitignored)
├── index.html # Homepage
├── build.js # Build script
├── generate-articles-list.js # Articles index generator
└── package.json # Dependencies and scripts
Create a .md file in the articles/ directory with metadata at the top:
title: Your Article Title
url: article-slug
date: YYYY.mmm.DD
published: true
-----------------
# Your Article Title
Article content here...| Field | Description | Example |
|---|---|---|
title |
Article title (required) | My First Post |
url |
URL slug (required) | my-first-post |
date |
Publication date | 2026.feb.18 |
published |
Show/hide article (required) | true or false |
Store images in a folder matching the article's URL slug:
articles/
├── my-article.md
└── my-article/
├── image1.webp
└── diagram.png
Reference images in markdown with relative paths: 
npm run buildThis generates a public/ directory containing:
- Static HTML pages for each article at
/articles/{slug}/ - All article images in their respective directories
- Components and assets
- Homepage and article listing page
sitemap.xmlfor SEO
After cloning, search for your-blog.com and Your Name across the project and replace with your own values. Key files to customize:
index.html— Homepage title, description, and structured dataarticles/list.html— Articles page meta tagsbuild.js— Article page template meta tags and structured datacomponents/footer-component.js— Social media linksrobots.txt— Sitemap URLassets/images/— Favicon and cover image
The public/ folder is a complete static site. Deploy it to:
- Vercel — Set build command to
npm run buildand output directory topublic - Netlify — Same configuration as Vercel
- GitHub Pages — Push
public/contents togh-pagesbranch - Any static host — Upload the contents of
public/
- Pure HTML/CSS/JavaScript (no framework)
- Web Components for reusable UI
- marked for Markdown parsing
- md-block for development mode
- If you find think the project can be improved, send a PR with your idea.
- For any other remarks, give me a sign by sending an email at me@georgeserbanescu.com
MIT