Skip to content
/ iezer Public

a blog engine built with only JS / CSS / HTML. write markdown and publish

License

Notifications You must be signed in to change notification settings

gserb/iezer

Repository files navigation

Iezer

A minimal, open-source static blog engine built with vanilla JavaScript and web components. No frameworks, no dependencies beyond a Markdown parser.

image

Demo

A live demo can be accessed at https://www.georgeserbanescu.com

Features

  • 📝 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}/)

Quick Start

Fork the current repo. After run:

npm install
npm start

Project Structure

.
├── 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

Writing Articles

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...

Metadata Fields

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

Article Images

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: ![Description](image1.webp)

Building for Production

npm run build

This 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.xml for SEO

Customization

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 data
  • articles/list.html — Articles page meta tags
  • build.js — Article page template meta tags and structured data
  • components/footer-component.js — Social media links
  • robots.txt — Sitemap URL
  • assets/images/ — Favicon and cover image

Deployment

The public/ folder is a complete static site. Deploy it to:

  • Vercel — Set build command to npm run build and output directory to public
  • Netlify — Same configuration as Vercel
  • GitHub Pages — Push public/ contents to gh-pages branch
  • Any static host — Upload the contents of public/

Technologies

  • Pure HTML/CSS/JavaScript (no framework)
  • Web Components for reusable UI
  • marked for Markdown parsing
  • md-block for development mode

Contributions and say hi

  • 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

License

MIT

About

a blog engine built with only JS / CSS / HTML. write markdown and publish

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors